【Docker第7回】ハンズオン/DockerでPHPの開発環境を構築

【Docker第7回】ハンズオン/DockerでPHPの開発環境を構築

Dockerに入門しました。複数回に分けて備忘録として記載していきます。

本記事ではハンズオン/DockerでPHPの開発環境を構築した対応を記載します。

【ソースコードはこちら】
>> docker-php-only


【参考記事】


【関連記事】


構築環境

ディレクトリとファイルの準備

PCの任意のDIRに以下の構成でディレクトリとファイルを作成

構成

docker-php-only
├── index.php     # file  Helloを記載 
└── data          # dir
    └── info.php  # file  PHP INFOを記載

ファイルの内容

index.php

echo "Hello, PHP on Docker!";

info.php

php phpinfo();

PHPのイメージを取得

Macのターミナルで「docker-php-only」に移動し、以下のコマンドを実行していく

# イメージを取得
$ docker pull php:7.1.29-apache

# 確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 7.1.29-apache 9873db935da3 3 years ago 329MB

PHPのコンテナを起動

# コンテナの起動
$ docker run -p 4000:80 -v ${PWD}:/var/www/html -d php:7.1.29-apache

コマンドの意味

  • PHPとApache Webサーバーを含むDockerコンテナを起動し、ホストマシンのポート番号4000でアクセスできるようにする
  • コンテナ内の /var/www/html ディレクトリを、ホストマシンの現在のディレクトリにマウントし、コンテナ内のWebサーバーにアクセスするために必要なファイルをホストマシンから提供することができる

コマンドの詳細

# docker run Dockerコンテナを実行
-p 4000:80 ・コンテナのポート番号80を、ホストマシンのポート番号4000にマッピング
・これにより、ホストマシンからコンテナ内のWebサーバーにアクセス可能になる
・ホストマシンのポート番号:4000は任意のポートでOK
-v ${PWD} ・コンテナの /var/www/html ディレクトリをホストマシンの現在のディレクトリにマウント
・これにより、ホストマシンからコンテナ内のファイルにアクセス可能になる
-d コンテナをバックグラウンドで実行
php:7.1.29-apache ・使用するイメージの指定
・この場合は、PHP 7.1.29 と Apache Webサーバーを含むDockerイメージを使用

動作確認

PHP INFOの確認

curlコマンドで確認

# PHP infoのHTMLが表示される
$ curl http://localhost:4000//data/info.php

ブラウザで確認

  • ブラウザのURLに「http://localhost:4000//data/info.php」を入力
  • 以下の画面表示になればOK

Helloの確認

curlコマンドで確認

# index.phpの内容が表示される事を確認
$ curl http://localhost:4000/index.php
echo "Hello, PHP on Docker!";

ブラウザで確認

  • ブラウザのURLに「http://localhost:4000/index.php」を入力
  • 以下の画面表示になればOK

エラー対応

エラーになった場合は以下を実施してみる

  • タイポしていないか確認(URLのタイポ、コマンドのタイポ)
  • ローカルマシンのポートを変えてみる(本記事であれば4000 → 4001とか)
  • コンテナを一旦停止し、再度起動してみる

コンテナを停止

不要になったコンテナは一旦停止する

# docker psでCONTAINER IDを確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54c7623551fc php:7.1.29-apache "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:4000->80/tcp silly_germain

# docker stopでコンテナを停止
# docker stop <CONTAINER ID>
$ docker stop 54c7623551fc


# 複数指定も可能
# docker stop <CONTAINER ID 1> <CONTAINER ID 2> <CONTAINER ID 3>...

# 事後確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

以上で作業完了です。