使用Docker-Compose来旋转不同configuration的容器的多个实例

我知道你可以用docker-compose和scale命令来启动多个容器。 但是,它们都将使用相同的configuration。

是否有可能在同一主机上使用不同configuration(不同的.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.ymldev.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使用基于当前目录命名的项目。 在你的情况下,你需要单独的环境,所以你需要不同的项目名称。

您可以在环境中使用COMPOSE_PROJECT_NAME docker-compose -p <project_name>或设置COMPOSE_PROJECT_NAME

还有一些讨论提供了一种方法来坚持项目名称: https : //github.com/docker/compose/issues/745