了解しました。それでは、以下に「🔖 第6章:6.3 開発環境と本番環境の分離戦略(YAML分割設計)」を初学者向けに、具体例と図解、コメント付きYAMLで丁寧に解説します。


🔖 第6章:app側のdocker-composeの開発対応

6.3 開発環境と本番環境の分離戦略(YAML分割設計)


✅ 要点まとめ


📘 構成イメージ図

docker-compose.yml               ← 本番・開発共通のベース定義
docker-compose.override.yml      ← 開発環境でのみ読み込まれる追加設定(自動)
docker-compose.prod.yml          ← 本番用に個別で明示読み込みする設定


🧾 例:共通ベース構成(docker-compose.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)

# ./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"

開発用には、マウント・環境変数・デバッグ用コマンドなどを上書きできる