第10回: DockerでPHP+MySQL環境を作る — ゼロから再現性100%の開発環境を構築する

章: 第3章: PHP/Laravel運用連携

「私のマシンでは動く」を卒業しよう

PHPとMySQLの開発環境をローカルに手動インストールすると、バージョンの違い・設定の差異・パスの問題など、環境固有のトラブルが絶えません。チームで開発するならなおさらです。

DockerとComposeを使えば、誰の環境でもコマンド1つで同じPHP+MySQL環境が起動します。この記事ではその最小構成を作り上げます。

PHP+MySQL環境で押さえるべきポイント

PHPとMySQLを連携させるには次の3点が重要です。

1. PDOドライバ: PHPからMySQLに接続するには pdo_mysql 拡張が必要

2. サービス名でDB接続: DB_HOST にはサービス名(mysql など)を指定する

3. 起動順の制御: MySQLが準備完了してからPHPを起動する

構成パターンの比較

構成 向いている場面
PHP CLI + MySQL スクリプト実行・学習用の最小構成
PHP内蔵サーバ + MySQL 開発初期・シンプルなWebアプリ
nginx + PHP-FPM + MySQL 本番に近い構成・高トラフィック対応

チェックポイント: まずはPHP内蔵サーバで動かして動作確認し、必要に応じてnginx+PHP-FPM構成に移行するのが段階的に理解しやすい進め方です。

実際のCompose構成サンプル


services:
  php:
    build: .
    volumes:
      - ./:/app
    working_dir: /app
    command: php -S 0.0.0.0:8080 -t public
    ports:
      - "8080:8080"
  mysql:
    image: mysql:8.4
    environment:
      MYSQL_DATABASE: app
      MYSQL_ROOT_PASSWORD: secret

php サービスのDockerfileには docker-php-ext-install pdo pdo_mysql を含めることを忘れずに。アプリ側の DB_HOSTmysql(サービス名)を指定します。

まとめ & 次のステップ

  • Dockerfileに pdo_mysql 拡張のインストールを含める
  • DB_HOST にはサービス名を指定する(localhost は不可)
  • まずCLI実行で動作確認し、次にWebサーバ設定を加える段階的アプローチを取る
  • ボリュームでMySQLデータを永続化する(第04回の知識を活用)

次回は「DockerでLaravelを動かす基礎」を学びます。LaravelプロジェクトをComposeで起動し、新メンバーが即日開発に参加できる環境を作ります。

Related Articles