Docker 入門
さまざまな Web サーバを Docker Compose で構築する
Apache で PHP を動かす
ここでは,PHP のプログラムを apache web サーバで動かすサンプルを示します.なお,このページのサンプルコードは GitHub の web07ApachePHP フォルダで公開しています.例によって新規ディレクトリを作成し,docker-compose.yml,index.php などを次のようなディレクトリ階層の中に保存します.
% tree -a -F ⏎
./
├── docker-compose.yml
├── Readme.md
└── web/
└── html/
└── index.php
3 directories, 3 files
全体の設計図である docker-compose.yml には次の内容を記述します.ここで,php:8.2-apache
という公式イメージを利用することで,PHP が動作する apache 環境を簡単に構築できます.
docker-compose.yml
services:
apache:
image: php:8.2-apache
container_name: php-apache
ports:
- "80:80"
volumes:
- ./web/html:/var/www/html
トップページは PHP を使ったコンテンツにします.
web/html/index.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Apache PHP Test</title>
</head>
<body>
<?php echo '<h1>Hello Apache PHP </h1>'; ?>
<p>
このサイトは PHP プログラムを Apache で動かしています.
</p>
</body>
</html>
ファイルの準備ができたらコンテナを起動します.初めて利用するイメージであることから,最初にダウンロード (pull) が行われます.
% docker compose up -d ⏎
[+] Running 16/16
✔ apache Pulled 15.9s
✔ b2feff975e6d Already exists 0.0s
✔ cf2d0d41597c Pull complete 1.0s
✔ 3eb1165dd7ac Pull complete 11.0s
✔ 0bbbdec43bcc Pull complete 11.0s
✔ f05e61346b34 Pull complete 11.2s
✔ c2de65161c87 Pull complete 11.2s
✔ 3e040a2e27f5 Pull complete 11.2s
✔ 94a5b089b169 Pull complete 11.2s
✔ 054f424d1e6b Pull complete 11.3s
✔ 467d60b56a02 Pull complete 11.5s
✔ 80c4e4263b5e Pull complete 11.5s
✔ ddb6a836431f Pull complete 11.5s
✔ ee303b9db93e Pull complete 11.5s
✔ f2778d364b47 Pull complete 11.6s
✔ 4f4fb700ef54 Pull complete 11.6s
[+] Running 2/2
✔ Network web07apachephp_default Crea... 0.0s
✔ Container php-apache Started 0.4s
%
ダウンロード済みのイメージを一覧で確認します.
% docker image ls ⏎ REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 17848b7d08d1 5 weeks ago 198MB httpd latest 8875809932eb 6 weeks ago 147MB php 8.2-apache b187632cf9b0 6 weeks ago 513MB %
続いてコンテナが起動していることを確認します.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2727d2844d50 php:8.2-apache "docker-php-entrypoi…" 36 seconds ago Up 35 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp php-apache
%
起動が確認できたので,Web ブラウザで http://localhost/ にアクセスします.次の通り PHP のプログラムが動作していることが確認できました.
最後にコンテナを終了させて廃棄します.
% docker compose down ⏎ [+] Running 2/2 ✔ Container php-apache Removed 1.2s ✔ Network web07apachephp_default Remo... 0.2s % docker container ls -a ⏎ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES %