如何在docker-compose文件中使用`--scale`参数进行扩容

16

假设我有以下的docker-compose.yml文件:

version: '3'

services:
    load-balancer:
        ...
        ...

    web-application:
        ...
        ...

如果我想使用5个web-application副本运行此应用程序,我必须执行以下命令:

docker-compose up --scale web-application=5

有没有办法在docker-compose.yml文件中告诉Docker执行--scale web-application=5命令?

2个回答

22

只有在 Swarm 模式下,您才能在 docker-compose 中指定副本数量。

请查看 deploy 指令。

示例:

services:
  redis:
    image: redis:latest
    deploy:
      replicas: 2

从文档中可以看出:

这仅在使用docker stack deploy部署到swarm时生效,对于docker-compose up和docker-compose run则被忽略。

最后,在此GitHub问题中,有一些关于该功能的讨论(因为它曾经可能存在),并且这里是最新compose规范中提到的相关内容。


这个解决方案对我有用,你应该使用docker-compose up -d来启动具有副本的Docker容器。 - Jorge Santos Neill
这在使用 docker-compose up -d 命令时无法工作。它会显示 WARNING: Some services use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration,所以只能在 swarm 模式下工作?但我不想要一个 swarm。 - HelloGriffin

4

我在docker compose文件中测试了副本,对我有效的代码如下。 带有5个副本的docker容器示例

您应该使用docker-compose up -d来执行配置

您应该看到以下结果。 结果。

Web浏览器中的结果应该如下所示: Web浏览器中的nginx


3
我记得阅读过这只有在“swarm”模式下才可能实现。你是否需要在系统上开启类似于“swarm”模式的功能才能让这个工作? - shinvu
1
在我的机器上尝试了一下,没有对默认安装进行任何更改,我可以确认docker compose up -d确实使用了deploy.replicas字段。 - Alexis Tyler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接