概要
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の永続化とデータ分離
- 開発用と本番用で異なるボリュームを定義し、環境ごとのデータの混在を防止。
コメント