概要
PHP(8.1-FPM)、Nginx、MySQL を使用した Webアプリケーション開発環境を Docker Compose により構築しました。開発・本番環境を分離し、保守性と拡張性の高い構成を意識して設計しています。
構築する開発環境
Webサーバ:Nginx(最新版)
データベース:MySQL 8.0
言語:PHP 8.1+FPM
PHP + Nginx + Docker Compose を用いたWebサービスの典型的な構成

Webブラウザでhttp://localhost:8080へアクセスすると以下のサイト内容が表示される。

プロジェクトのディレクトリ構成
MY_SERVER2/
├── app/
│ └── Dockerfile
├── html/
│ └── index.php
├── nginx/
│ ├── default.conf
│ └── Dockerfile
├── .env
├── .env.prod
├── docker-compose.override.yml
├── docker-compose.prod.yml
├── docker-compose.yml
└── README.md(使い方まとめ)
階層 | ファイル / ディレクトリ名 | 種類 | 備考 |
---|---|---|---|
ルート | app/ | ディレクトリ | PHPアプリケーション用 |
└── app | Dockerfile | ファイル | PHP-FPM用Dockerfile |
ルート | html/ | ディレクトリ | Web公開ファイル |
└── html | index.php | ファイル | Webページのエントリーポイント |
ルート | nginx/ | ディレクトリ | Nginx設定用 |
└── nginx | default.conf | ファイル | Nginx仮想ホスト設定 |
└── nginx | Dockerfile | ファイル | Nginx用Dockerfile |
ルート | .env | ファイル | 開発環境用環境変数 |
ルート | .env.prod | ファイル | 本番環境用環境変数 |
ルート | docker-compose.override.yml | ファイル | 開発環境の上書き設定 |
ルート | docker-compose.prod.yml | ファイル | 本番環境用構成 |
ルート | docker-compose.yml | ファイル | 基本のDocker構成 |
ルート | README.md(使い方まとめ) | ファイル | 利用方法の説明書 |
主な特徴と工夫
✅ 1. 開発・本番環境の分離
docker-compose.yml
をベースに、開発用のdocker-compose.override.yml
と本番用のdocker-compose.prod.yml
を分離。- 開発時はホストマウントによるホットリロード、本番ではビルドによるデプロイを実現。
✅ 2. 各サービスごとにDockerfileを分離
app/
に PHP-FPM 用 Dockerfile、nginx/
に Webサーバー用 Dockerfile を配置。- サービスごとに責任を明確化し、将来的なメンテナンスやスケールアップに対応しやすい構成に。
✅ 3. セキュリティを意識した環境変数管理
.env
ファイルで環境設定を一元管理し、機密情報は.gitignore
によりGitから除外。
✅ 4. MySQLの永続化とデータ分離
- 開発用と本番用で異なるボリュームを定義し、環境ごとのデータの混在を防止。
コメント