如何使docker-compose规模开始依赖?

时间:2017-02-15 09:59:40

标签: docker docker-compose

有一个设置有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也启动依赖?如果不是,这种行为背后的理由可能是什么?

1 个答案:

答案 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

创建两者中的两个并进行正确的链接。