ユーザーがdocker-composeでscaleコマンドを使用して複数のコンテナーをスピンアップできることを理解しています。ただし、すべて同じ構成が使用されます。
同じホスト上で、異なる構成(異なる.yml
ファイル)同じホスト上?
次のコマンドを使用します。
docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d
だけ qa.yml
コンテナが実行されますが、これは私が望むものではありません。
-編集-
両方のコマンドを実行しようとするとどうなりますか。
$ docker-compose -f compose/dev.yml up -d
compose_mydocker_1 is up-to-date
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
905912df6e48 compose_mydocker "/sbin/my_init" 2 days ago Up 2 days 0.0.0.0:1234->80/tcp compose_mydocker_1
$ docker-compose -f compose/qa.yml up -d
Recreating compose_mydocker_1...
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fc912201224 compose_mydocker "/sbin/my_init" 5 seconds ago Up 5 seconds 0.0.0.0:1235->80/tcp compose_mydocker_1
俺の qa.yml
およびdev.yml
こんな風に見える:
mydocker:
build: ..
ports:
- "1234:80" #for dev.yml
#- "1235:80" for qa.yml
environment:
- ENVIRONMENT=dev #and vice-versa for qa
volumes:
- ../assets/images:/var/www/assets
あなたがする必要があるのは、プロジェクト名を変更することです。デフォルトでは、composeは現在のディレクトリに基づいた名前のプロジェクトを使用します。あなたの場合、別々の環境が必要なので、異なるプロジェクト名が必要です。
環境でdocker-compose -p <project_name>
を使用するか、COMPOSE_PROJECT_NAME
を設定できます。
プロジェクト名を永続化する方法を提供することについての議論もあります: https://github.com/docker/compose/issues/745