使用Docker-Compose来旋转具有不同配置的容器的多个实例

Nep*_*oxx 24 docker docker-compose

我知道您可以使用scale命令来使用docker-compose来旋转多个容器.但是,它们都将使用相同的配置.

是否可以在同一主机上使用不同配置(不同.yml文件)在同一主机上启动容器?

使用以下命令:

docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d
Run Code Online (Sandbox Code Playgroud)

只有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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

dne*_*hin 43

您需要做的是更改项目名称.默认情况下,compose使用基于当前目录命名的项目.在您的情况下,您需要单独的环境,因此您需要不同的项目名称.

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

还有一些关于提供持久化项目名称的方法的讨论:https://github.com/docker/compose/issues/745

  • `docker-compose -p <项目名称> stop`或`docker-compose -p <项目名称> down` (2认同)