Apache + PHP サーバーをローカルでエミュレートする



Docker Compose を使えば、ホスト側に何もインストールすることなく、ローカルに Apache + PHP サーバーを起動できます。 これは PHP ページをデプロイする前に開発・テストするのに便利です。


docker-compose.yml

配信したいディレクトリに、このファイルを配置します。

services:
  web:
    image: php:8.3-apache
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html

ボリュームマウント .:/var/www/html はカレントディレクトリを Apache のドキュメントルートにマッピングするため、 そのディレクトリ内のすべてのファイルが、再ビルドなしで即座に利用可能になります。

サブディレクトリ(例: web_portal/)を配信したい場合は、ボリュームを次のように変更します。

      - ./web_portal:/var/www/html


起動と停止

docker-compose.yml のあるディレクトリから実行します。

docker compose up -d

コンテナを停止して削除します。

docker compose down


サーバーへのアクセス

ブラウザを開いて、次の URL にアクセスします。

http://localhost:8080/<filename>.php

たとえば、docker-compose.yml が ./web_portal をマウントしていて、そのディレクトリに type1.php が含まれている場合は次のようになります。

http://localhost:8080/type1.php


便利なコマンド

ページの読み込み中に Apache のエラーログを追跡します。

docker compose logs -f

コンテナ内でシェルを開きます。

docker compose exec web bash