kapieciiのブログ

日々学んだことを残しておくためのブログです。このブログはGoogle Analyticsを利用しています。

Docker+PHP+Apacheの環境を作った

こちらのスライドをみて「コンテナでの運用がどのようなものか体験してみたいな」と思ったのでDockerに入門してみました。

『1年間の本番運用でわかったコンテナがチーム開発にもたらしてくれたもの/container-brought-to-team-development』

speakerdeck.com

最初の一歩として、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については、こちらから検索することができます。

hub.docker.com

Dockerfileの「FROM」についての公式ドキュメントはこちら。
「FROM」以外にもDockerfileの各種オプションについて記載されています。

docs.docker.com

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を使うことが推奨されているようです。

docs.docker.com

ブラウザから「http://localhost:80/」にアクセスします。

f:id:kapiecii:20190425153321p:plain

phpinfo()の実行結果が確認できました。
Apacheは「Apache/2.4.25 (Debian)」でした。

f:id:kapiecii:20190425153403p:plain

レスポンスヘッダにもPHPApacheのバージョン情報が記載されていますね。

f:id:kapiecii:20190425153434p:plain

最後に

Dockerを使って、PHPの実行環境を作ってみました。
コンテナを使った運用を体験したいと考えているので、引き続き学習を進めます。

この本を買ってみようと思います。

kapieciiのブログについてお問い合わせがある場合、下記のフォームからご連絡をお願い致します。
お問い合わせはこちら