2026年11月10日
2026年11月10日
Docker Composeのprofileで環境ごとに起動コンテナを切り替える方法
はじめに
Docker Composeは、複数のコンテナを一括で起動・停止できる便利なツールです。しかし、開発環境と本番環境などで異なる設定が必要な場合、単純な Compose ファイルでの管理だけでは不便なことが多々あります。この記事では、Docker Compose の profile 効果を利用して、異なる環境ごとにコンテナの起動・停止を柔軟に切り替える方法について説明します。
症状・背景
- 複数の開発環境を持つ場合:開発環境と本番環境で同じアプリケーションを動かす際、それぞれ異なる設定が必要なケースがよくあります。これに対応するために、
docker-compose.ymlファイルを複製し、それぞれの環境ごとに異なる設定を行う方法がありますが、管理が複雑になります。 - 一括起動・停止を希望する場合:開発やテスト段階では
docker-compose upで全てのコンテナを同時に起動したい一方、本番環境では特定のサービスだけを起動したいなど、異なる操作が必要なケースがあります。
手順・設定方法
ステップ1: docker-compose.yml ファイルの作成と編集
# docker-compose.yml の基本構造を示します。
version: '3.8'
services:
db:
image: postgres
web:
build: .
volumes:
- .:/code
ステップ2: profile オプションを使用した起動
# デベロッパーモードで起動する場合
docker-compose --profile dev up
# プロダクションモードで起動する場合
docker-compose --profile prod up
ステップ3: 環境に応じた設定を追加
# docker-compose.yml に profile 機能を使用できるように、特定のサービスに profile オプションを指定します。
version: '3.8'
services:
db:
image: postgres
web:
build: .
volumes:
- .:/code
profiles:
- dev
- prod
profiles:
dev:
container_name: my_web_dev
environment:
- DEBUG=true
- DB_NAME=mydb_dev
ports:
- "8000:80"
prod:
container_name: my_web_prod
environment:
- DEBUG=false
- DB_NAME=mydb_prod
ports:
- "8080:80"
ステップ4: 実践/トラブルシュート/監視
# 各プロファイルのコンテナを確認する
docker ps --filter label=profile.dev
docker ps --filter label=profile.prod
# コンテナ内部でログを確認する
docker-compose logs -f my_web_dev
注意事項
- 環境変数の管理:
profilesを使用することで、異なる設定を簡単に切り替えられるようになりましたが、環境ごとに適切な環境変数をセットすることも重要です。 - パフォーマンス:複数のプロファイルを使用する場合、コンテナの起動・停止に時間がかかる可能性があります。そのため、頻繁に使用しないプロファイルは無効化したり、個別に管理したりすることが推奨されます。
まとめ
1. 環境変数の差分:profiles を利用することで、開発と本番環境で異なる設定を簡単に切り替えられます。
2. 一括起動・停止:特定のプロファイルに指定されたコンテナだけを一括で起動或は停止できます。
3. セキュリティ:各プロファイルには異なるポートやネットワーク設定が可能で、セキュリティ上の問題を防ぐことができます。
4. 管理のシンプル化:複数の Compose ファイルではなく、一つの docker-compose.yml を活用することで、管理がシンプルになります。
関連記事: