了解しました。それでは、以下に「🔖 第6章:6.3 開発環境と本番環境の分離戦略(YAML分割設計)」を初学者向けに、具体例と図解、コメント付きYAMLで丁寧に解説します。
本番用と開発用の環境では、使う設定(マウント・環境変数・ビルド方法など)を分離したい
docker-compose.yml
を共通のベース構成とし、
開発時は docker-compose.override.yml
を追加読み込みすることで、開発用の設定を上書きできる
これにより、本番と開発の構成を安全に・柔軟に共存できる
docker-compose.yml ← 本番・開発共通のベース定義
docker-compose.override.yml ← 開発環境でのみ読み込まれる追加設定(自動)
docker-compose.prod.yml ← 本番用に個別で明示読み込みする設定
# ./docker-compose.yml
version: '3.8'
services:
auth:
image: harbor.example.com/dev/auth:latest
container_name: auth
ports:
- "3000:3000"
environment:
- RAILS_ENV=production
depends_on:
- db
db:
image: postgres:14
environment:
- POSTGRES_USER=auth_user
- POSTGRES_PASSWORD=secret
本番と開発で共通する最低限の構成だけを書く
# ./docker-compose.override.yml
version: '3.8'
services:
auth:
# Harborのimageではなく、ローカルソースをマウントして上書き
volumes:
- ../auth:/app:cached
environment:
- RAILS_ENV=development
# デバッグログ等も出力しやすく
command: bash -c "rm -f tmp/pids/server.pid && rails server -b 0.0.0.0"
開発用には、マウント・環境変数・デバッグ用コマンドなどを上書きできる