我创建了一个docker图像来运行清漆。它传递了清漆.vcl配置文件,自定义端口已设置并且可以正常工作。
我在一台服务器上推出了多个容器,每个容器都有自定义配置和端口。所以我写了一个docker-compose.yml
文件来定义它。使用docker stack deploy
我可以让它们全部运行。
如果我想调整泊坞窗图像,问题会出现。
目前,我正在更新docker-compose.yml
文件中的版本并重新运行docker stack deploy
命令,该命令关闭所有的码头工人并重新启动它们。
我想错开重新部署,以便一次更新一次,因为这样做会立即导致服务器上的大量负载,只会随着我们的扩展而变得更糟。
我该怎么做? 对这种情况有没有更好的方法?
提前致谢!
当前的docker-compose.yml文件:
version: "3"
services:
test-site-one:
image: test/varnish:v7.3
deploy:
restart_policy:
condition: on-failure
ports:
- "8080:80"
volumes:
- /path/to/magento.vcl:/etc/varnish/default.vcl
test-site-two:
image: test/varnish:v7.3
deploy:
restart_policy:
condition: on-failure
ports:
- "8081:80"
volumes:
- /path/to/magento.vcl:/etc/varnish/default.vcl
test-site-three:
image: test/varnish:v7.3
deploy:
restart_policy:
condition: on-failure
ports:
- "8082:80"
volumes:
- /path/tp/magento.vcl:/etc/varnish/default.vcl
答案 0 :(得分:0)
您可以按照此处https://docs.docker.com/compose/compose-file/#update_config中的说明在Compose文件中指定update_config。
根据文件:
配置应如何更新服务。用于配置滚动更新。
- parallelism:一次更新的容器数。
- 延迟:更新一组容器之间的等待时间。
- failure_action:更新失败时该怎么办。继续,回滚或暂停之一(默认:暂停)。
- monitor:每次更新任务后的持续时间以监控失败(ns | us | ms | s | m | h)(默认为0)。
- max_failure_ratio:更新期间容忍的失败率。
- order:更新期间的操作顺序。 stop-first之一(旧任务在启动新任务之前停止)或start-first(首先启动新任务,并且运行任务暂时重叠)(默认stop-first)注意:仅支持v3.4及更高版本
version: '3.4'
services:
vote:
image: dockersamples/examplevotingapp_vote:before
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
order: stop-first
答案 1 :(得分:0)
您可以将这些服务分成各自的docker-compose_<num>.yml
文件,然后只需运行适当的部署命令docker stack deploy ms -c docker-compose_<num>.yml
即可。如果他们需要按顺序运行,则只需将每个deploy命令放入脚本中,并在其之间插入sleep命令(如果需要)。