有一个设置有1 ... N个应用程序容器,它们连接到不同的后端服务。 docker-compose.yml
看起来像这样:
services:
backend1:
...
backend2:
...
application:
...
depends_on:
backend1:
condition: service_healthy
backend2:
condition: service_healthy
使用docker-compose scale SERVICE=INSTANCES
启动应用程序的多个实例时,结果为
$ docker-compose scale application=2
Creating and starting application_1 ... done
Creating and starting application_2 ... done
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4e274552239 application_image ... 4 minutes ago Up 4 minutes (unhealthy) application_1
39f28173087c application_image ... 4 minutes ago Up 4 minutes (unhealthy) application_2
显然,依赖关系没有开始。当使用docker-compose up application
启动单个服务实例时,将正确启动依赖项:
$ docker-compose up -d application
Creating backend1_1
Creating backend2_1
Creating application_1
之后,可以添加第二个实例docker scale
:
$ docker-compose scale application=2
Creating and starting application_2 ... done
这很好用。但有没有办法让docker-compose scale
也启动依赖?如果不是,这种行为背后的理由可能是什么?
答案 0 :(得分:1)
我不相信现在有办法做到这一点。这个主题有一个很长的,正在运行的issue commentary。
One of the comments提到它将在架构的第3版中提供。
我在本地尝试过最小版本:
version: '2'
services:
a:
image: alpine
links:
- b
command: sleep 10
b:
image: alpine
command: sleep 10
up
不适用于比例。但是(你可能已经知道了),你可以在命令中命名所有服务,所以
docker-compose scale a=2 b=2
创建两者中的两个并进行正确的链接。