Docker+PHP+Apacheの環境を作った
こちらのスライドをみて「コンテナでの運用がどのようなものか体験してみたいな」と思ったのでDockerに入門してみました。
『1年間の本番運用でわかったコンテナがチーム開発にもたらしてくれたもの/container-brought-to-team-development』
最初の一歩として、PHPのphpinfo()を実行させるところまで確認しました。
目次
環境
Ubuntu16.04
Dockerインストール
こちらのドキュメントに従ってDocker CEをインストールします。
Ubuntu 用 Docker CE の入手 — Docker-docs-ja 17.06 ドキュメント
Dockerfileを作成
Dockerfileを作成します。
Dockerfileには、作成したいDocker imageの設定を記載します。
$ cat Dockerfile FROM php:7.3.4-apache
今回はPHPの実行環境を作りたかったので、「FROM」で「php:7.3.4-apache」を指定しました。
FROM <image>[:<tag>]
という形式で目的のイメージを指定をすることができます。 imageやtagについては、こちらから検索することができます。
Dockerfileの「FROM」についての公式ドキュメントはこちら。
「FROM」以外にもDockerfileの各種オプションについて記載されています。
buildする
DokerfileからDocker Imageをbuildします。 「-t」でimageの名前とタグを指定することができます。
-t name:tag
の形式で記載します。
$ docker build ./ -t php_apache_image:ver1
作成されたimageを確認します。複数行表示されていますが、「IMAGE ID」が同一なので同じイメージです。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE php 7.3.4-apache 1dffbbe4a5d3 2 weeks ago 378MB php_apache_image ver1 1dffbbe4a5d3 2 weeks ago 378MB
Webサーバに載せるコンテンツ作成
続いて、Apacheの上で実行するPHPコンテンツを作成します。 今回はphpinfo()を実行するだけの簡単なものを準備しました。
$ mkdir html $ vim ./html/index.php $ cat ./html/index.php <?php phpinfo();
Dockerを起動しブラウザから確認
作成したImageを起動してphpinfo()を実行させてみます。
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
の形式で実行させます。
$ docker run -d -p 80:80 --mount type=bind,source="$(pwd)"/html,target=/var/www/html --name php_apache_container php_apache_image:ver1
-d: バックグラウンドで実行させるオプションです。 -p: {ホスト側のポート}:{コンテナ側のポート}の形式でポートを指定するオプションです。 --mount: sourceでホスト側のディレクトリ指定し、targetでコンテナ側のディレクトリを指定します。 --name: コンテナの名前を指定します。
以前は--mountではなく--volumeだったようですが、今後は--mountを使うことが推奨されているようです。
ブラウザから「http://localhost:80/」にアクセスします。
phpinfo()の実行結果が確認できました。
Apacheは「Apache/2.4.25 (Debian)」でした。
レスポンスヘッダにもPHPとApacheのバージョン情報が記載されていますね。
最後に
Dockerを使って、PHPの実行環境を作ってみました。
コンテナを使った運用を体験したいと考えているので、引き続き学習を進めます。
この本を買ってみようと思います。