章: 第6章: パフォーマンスとインフラ
「自分のMacでは動くのに、別のメンバーの環境では動かない」で時間を消耗していませんか?
PHPのバージョン違い・MySQLの設定差・拡張モジュールの有無——こうした環境差異がバグの温床になります。Dockerを使えば、コンテナで環境を定義することで、チームや本番との差異をなくせます。
Dockerなしで開発環境を共有すると何が起きるか
「自分の環境では再現しない」バグに時間を使い、新メンバーの環境構築に何時間もかかります。docker compose up -d 1コマンドで全員が同じ環境を起動できるようになれば、この問題は根本解決できます。
環境構築方法の比較
| 方法 | 環境の一致 | 構築時間 | 柔軟性 | 推奨場面 |
| 各自の手動インストール | バラつきあり | 長い | 高い | 個人開発・小規模 |
| Vagrant | ほぼ一致 | 長い | 中程度 | VMで分離したい場合 |
| Docker Compose | 完全一致 | 短い | 高い | チーム開発・本番との一致 |
| Laravel Sail | 完全一致(Laravel専用) | 短い | 中程度 | Laravelプロジェクト |
チェックポイント:
docker-compose.ymlをバージョン管理に含め、チームで共有しましょう。.envファイルとのセットで管理することで、環境変数の差異もなくせます。またvolumesでソースコードをマウントすれば、コンテナ再起動なしにコード変更が反映されます。
コードサンプル
# docker-compose.yml(Laravelの基本構成)
services:
app:
build: .
ports: ["8080:80"]
volumes: [".:/var/www/html"]
depends_on: [db]
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: app
MYSQL_ROOT_PASSWORD: secret
volumes: ["db_data:/var/lib/mysql"]
redis:
image: redis:7-alpine
volumes:
db_data:
# 起動: docker compose up -d
まとめ & 次のステップ
- Dockerで環境を定義することで、チーム全員が同じ環境で開発できます
docker-compose.ymlはバージョン管理に含め、README に起動手順を記載しましょうvolumesでソースコードをマウントし、ホットリロードを実現しましょう- 本番環境のDockerfileと開発用を分けてセキュリティと利便性を両立させましょう
depends_onでサービス起動順を制御し、DB準備前のアプリ起動を防ぎましょう
次回は .envによる環境変数管理 を学びます。設定値をコードから切り離して安全に管理する方法を整理しましょう。