章: 第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_HOST は mysql(サービス名)を指定します。
まとめ & 次のステップ
- Dockerfileに
pdo_mysql拡張のインストールを含める DB_HOSTにはサービス名を指定する(localhostは不可)- まずCLI実行で動作確認し、次にWebサーバ設定を加える段階的アプローチを取る
- ボリュームでMySQLデータを永続化する(第04回の知識を活用)
次回は「DockerでLaravelを動かす基礎」を学びます。LaravelプロジェクトをComposeで起動し、新メンバーが即日開発に参加できる環境を作ります。