見出し画像

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インストール

  1. Dockerインストール

    • WindowsならDocker Desktop or WSL2

    • Linux/macOSならパッケージ or dmgで導入

  2. Docker Composeインストール

    • 近年のDocker Desktopには同梱

    • CLI版なら sudo curl -L "https://github.com/docker/compose/releases/download/..." -o /usr/local/bin/docker-compose などのコマンドで導入

  3. バージョン確認 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

構成解説

  1. nginx:

    • ports: "8080:80" でホストの8080をNginxコンテナの80へ

    • depends_on: php → PHP起動後にnginxが立ち上がる

  2. php:

    • build: ./php → 例えばphp/DockerfileでPHP-FPMイメージを作成

    • Webファイルはpublicフォルダを共有

  3. 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. トラブルシュート:よくあるエラー対策

  1. ポート競合("address already in use")

    • ホストの8080が別プロセスで使われている → sudo lsof -i :8080 などで調査

  2. Volumeパスのミス

    • volumes: - ./public:/var/www/html → 相対パスか絶対パスか要確認

  3. MySQLコンテナが起動しない

    • 環境変数 MYSQL_ROOT_PASSWORD を設定し忘れ → MySQL5.7以上は必須

  4. Dockerfileのビルド失敗

    • php/Dockerfile のパスやスペルミスに注意

    • docker-compose build で再試行



6. xCampでDocker Composeを効率学習&転職に活かそう

xCampAWSや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_

いいなと思ったら応援しよう!