使用 Docker-Compose 启动具有不同配置的容器的多个实例
Using Docker-Compose to spin up multiple instances of a container with different configurations
我知道您可以使用 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
我知道您可以使用 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