DockerでNginx×PHP×MySQLの開発環境構築

概要

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アプリケーション用
└── appDockerfileファイルPHP-FPM用Dockerfile
ルートhtml/ディレクトリWeb公開ファイル
└── htmlindex.phpファイルWebページのエントリーポイント
ルートnginx/ディレクトリNginx設定用
└── nginxdefault.confファイルNginx仮想ホスト設定
└── nginxDockerfileファイル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の永続化とデータ分離

  • 開発用と本番用で異なるボリュームを定義し、環境ごとのデータの混在を防止。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次