交错的码头工人堆栈部署

时间:2018-06-19 10:04:41

标签: docker docker-stack

我创建了一个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

2 个答案:

答案 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命令(如果需要)。