DockerでPHPの環境を構築する①


必要とする要素は
・PHP
・Apache
・MySQL
であり、そのうち今回はPHPとApacheを用意してindex.phpを実行させるシンプルな環境を構築する。
しかし、公式でPHPとApacheがセットになっているイメージが提供されているから、それを使用する。

ディレクトリ構成

Docker-|-Dockerfile
       |-index.php

となっており、デスクトップ上にDockerというディレクトリを作成している。
その中にDockerfileと実際のPHPのソースコードのindex.phpが存在している。

ステップ① index.phpを作成する

index.php
<?php
echo 'hello world';

hello worldを表示するシンプルなソースコード。

ステップ② Dockerfileを作成する

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をデフォルトで実行する。

ステップ③ イメージを作成する(ビルドする)

Desktop/Docker
docker build -t php7.2-apache .

ステップ④ コンテナを作成し、実行する

Desktop/Docker
docker container run -p 8000:80 --name php-test php7.2-apache

これでApacheサーバが立ち上がって、
localhost:8000hello worldが表示される。

サーバーを停止する時は、Cntroll + cで停止する。

ちなみに①

Desktop/Docker
docker container run -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache

こっちのコマンドでコンテナを起動すると、リアルタイムにPHPの変更された場所が反映される。

ちなみに②

Desktop/Docker
docker container run -d -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache

とすると、バックグラウンドで起動できるから、ターミナルが使えるようになる。

ちなみに③

バックグラウンドの状態(-d)の状態だと、ターミナルが使えてコンテナの中に入ることができる。

Desktop/Docker
docker exec -it php test bash

そうすると、Linuxのフォルダが一覧できる。
コンテナから抜ける場合は

exit

とコマンドを打つと抜けられ、
バックグランドの状態だとcontroll + cが使えないから、

docker stop php-test

と打つと、コンテナが停止される。