神戸学院大学 経営学部 林坂ゼミ

Docker 入門トップページ

« 戻る 次へ »

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-2025-web-15

最後にコンテナを終了させて廃棄します.

% 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
%