
Docker Composeで開発環境を一発構築!PHP+MySQL+Nginxの実用例
はじめに
「Dockerは使えるけど、複数コンテナ連携は面倒そう…」
「PHPとMySQLとNginxをまとめて動かしたいけど、一つずつ run するのは大変」
そんな方におすすめなのが Docker Compose。複数のコンテナを一つのYAMLファイルで定義し、一気に起動・停止ができる便利ツールです。
本記事では、PHP+MySQL+NginxをComposeで構築する超実用的な例を紹介。1つのコマンドで“開発環境が完成”という快感を、ぜひ味わってみてください!
1. Docker Composeって何がいいの?

複数コンテナを一括管理
Webサーバ、DB、キャッシュなどをまとめて定義 → docker-compose upだけで起動
設定の一元化
すべてのイメージ名、ポート、ボリューム、環境変数をYAMLファイルに書く → 見通し◎
簡易的なマルチコンテナ開発環境
本番環境を再現しやすい → “開発PCでも同じ構成”が実現
メリット:チームでyamlを共有するだけで、誰でも同じ環境を起動できる。テスト&開発効率が上がる。
2. 準備:Docker & Composeインストール
Dockerインストール
WindowsならDocker Desktop or WSL2
Linux/macOSならパッケージ or dmgで導入
Docker Composeインストール
近年のDocker Desktopには同梱
CLI版なら sudo curl -L "https://github.com/docker/compose/releases/download/..." -o /usr/local/bin/docker-compose などのコマンドで導入
バージョン確認 docker-compose --version docker --version
どちらも問題なく動けばOK
注意: Docker Compose v1とv2があり、コマンドがdocker-composeかdocker composeか違う場合もある。環境に合わせて使おう。
3. docker-compose.ymlのサンプル(PHP+MySQL+Nginx)
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./public:/var/www/html
depends_on:
- php
networks:
- webnet
php:
build: ./php
volumes:
- ./public:/var/www/html
networks:
- webnet
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: app_db
volumes:
- db_data:/var/lib/mysql
networks:
- webnet
volumes:
db_data:
networks:
webnet:
driver: bridge
構成解説
nginx:
ports: "8080:80" でホストの8080をNginxコンテナの80へ
depends_on: php → PHP起動後にnginxが立ち上がる
php:
build: ./php → 例えばphp/DockerfileでPHP-FPMイメージを作成
Webファイルはpublicフォルダを共有
mysql:
environment に DB名やパスワード
volume で db_data をマウント → データ永続化
フォルダ構成例:
myproject/
├─ docker-compose.yml
├─ public/
│ └─ index.php
├─ php/
│ └─ Dockerfile
└─ nginx.conf
4. 起動&停止の手順:実行コマンド例
docker-compose up -d
-d でバックグラウンド起動
初回はイメージをPull or Buildするので時間がかかる
docker-compose ps
実行中のコンテナを確認
docker-compose logs -f
各サービスのログをリアルタイム表示 → エラーを見逃さない
docker-compose down
すべてのコンテナを停止&ネットワーク・ボリュームを削除
ブラウザで: http://localhost:8080
public/index.php が表示されれば成功
5. トラブルシュート:よくあるエラー対策
ポート競合("address already in use")
ホストの8080が別プロセスで使われている → sudo lsof -i :8080 などで調査
Volumeパスのミス
volumes: - ./public:/var/www/html → 相対パスか絶対パスか要確認
MySQLコンテナが起動しない
環境変数 MYSQL_ROOT_PASSWORD を設定し忘れ → MySQL5.7以上は必須
Dockerfileのビルド失敗
php/Dockerfile のパスやスペルミスに注意
docker-compose build で再試行
6. xCampでDocker Composeを効率学習&転職に活かそう
xCampはAWSやLinuxなどインフラ基礎を無料で学べるスクール。
DockerやComposeの学習サポートあり → 「YAMLファイルが動かない…」などをメンターに質問可能
転職支援で“Docker運用経験”をアピール→ Web系企業・スタートアップで大いに評価されるスキル
無料枠が先着制 → リスクなく始められ、DevOps系の基礎を効率習得
7. まとめ
Docker Composeを使えば、複数コンテナ(Webサーバ, DB, PHP-FPMなど)を1つのファイルで管理し、一発で起動・停止が可能。
docker-compose.yml にサービスを定義→ docker-compose up -d → 開発環境が瞬時に完成
運用保守でも「本番に近いマルチコンテナ環境」をローカルに構築でき、チーム共有が超簡単
xCampでの学習を通じて、コンテナ技術やインフラ基礎を身につければ、未経験エンジニアでも即戦力になれるチャンス大。 まずはComposeのサンプルを動かしてみて、自動化の楽しさを体感してみましょう!
公式Xアカウント: _Xcamp_
弊社所属エンジニア(優太さん): @310engineer
弊社所属エンジニア(れおくん): @Reo_engineer_