Docker Composeプロファイルとオーバーライド
Docker Composeプロファイルでサービスを選択的に起動し、オーバーライドファイルで環境をカスタマイズ。プロファイルの有効化、オーバーライドパターン、環境固有の設定を学びます。
Docker Compose
詳細な説明
選択的サービス起動のためのプロファイル
Composeプロファイルを使用すると、サービスをグループ化し、必要なものだけを起動できます:
services:
web:
image: nginx:alpine
# プロファイルなし = 常に起動
api:
image: my-api:latest
profiles: ["backend"]
debug-tools:
image: busybox
profiles: ["debug"]
monitoring:
image: grafana/grafana
profiles: ["monitoring", "debug"]
プロファイルの有効化
# デフォルトサービスのみ起動(web)
docker compose up -d
# デフォルト+backendサービスを起動
docker compose --profile backend up -d
# 複数プロファイルを有効化
docker compose --profile backend --profile monitoring up -d
# 環境変数を使用
COMPOSE_PROFILES=backend,monitoring docker compose up -d
オーバーライドファイル
Docker Composeはdocker-compose.ymlとdocker-compose.override.ymlを自動的にマージします:
docker-compose.yml(ベース):
services:
api:
image: my-api:latest
ports:
- "3000:3000"
docker-compose.override.yml(開発用):
services:
api:
build: .
volumes:
- ./src:/app/src
environment:
- DEBUG=true
環境固有のファイル
# 開発(overrideが自動適用)
docker compose up -d
# 本番(明示的なファイル、overrideなし)
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
.envファイルの使用
# docker-compose.yml
services:
db:
image: postgres:${POSTGRES_VERSION:-16}
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
変数はプロジェクトルートの.envファイルから読み取るか、シェルで設定できます。
ユースケース
開発、テスト、本番環境の異なるサービス設定の管理。ベースのcomposeファイルを変更せずに、必要な時のみデバッグツールやモニタリングスタックを有効化。