必要とする要素は
・PHP
・Apache
・MySQL
であり、そのうち今回はPHPとApacheを用意してindex.phpを実行させるシンプルな環境を構築する。
しかし、公式でPHPとApacheがセットになっているイメージが提供されているから、それを使用する。
#ディレクトリ構成
Docker-|-Dockerfile
|-index.php
となっており、デスクトップ上にDockerというディレクトリを作成している。
その中にDockerfileと実際のPHPのソースコードのindex.phpが存在している。
##ステップ① index.phpを作成する
<?php
echo 'hello world';
hello world
を表示するシンプルなソースコード。
##ステップ② Dockerfileを作成する
FROM php:7.2-apache
LABEL maintainer="carametal"
COPY ./ /var/www/html/
COPY命令でカレントディレクトリをコンテナの/var/www/htmlにコピーすることで
カレントディレクトリのindex.phpとDockerfileが/var/www/html配下にコピーされる。
Apacheは「IPアドレス/」へのアクセスに対して/var/www/html/index.phpをデフォルトで実行する。
##ステップ③ イメージを作成する(ビルドする)
docker build -t php7.2-apache .
##ステップ④ コンテナを作成し、実行する
docker container run -p 8000:80 --name php-test php7.2-apache
これでApacheサーバが立ち上がって、
localhost:8000
でhello world
が表示される。
サーバーを停止する時は、Cntroll + c
で停止する。
###ちなみに①
docker container run -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache
こっちのコマンドでコンテナを起動すると、リアルタイムにPHPの変更された場所が反映される。
###ちなみに②
docker container run -d -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache
とすると、バックグラウンドで起動できるから、ターミナルが使えるようになる。
###ちなみに③
バックグラウンドの状態(-d)の状態だと、ターミナルが使えてコンテナの中に入ることができる。
docker exec -it php test bash
そうすると、Linuxのフォルダが一覧できる。
コンテナから抜ける場合は
exit
とコマンドを打つと抜けられ、
バックグランドの状態だとcontroll + c
が使えないから、
docker stop php-test
と打つと、コンテナが停止される。