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.ymldocker-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ファイルを変更せずに、必要な時のみデバッグツールやモニタリングスタックを有効化。

試してみる — Docker CLI Reference

フルツールを開く