Docker Swarm滚动更新

时间:2019-09-23 12:48:22

标签: docker gunicorn docker-swarm

Docker Swarm滚动更新

我正在尝试对docker swarm中的Django / gunicorn容器进行无干扰的滚动更新。这是堆栈中此服务的配置:

gunicorn:
    command: /bin/sh -c "./manage.py collectstatic --noinput; gunicorn myapp.wsgi -b 0.0.0.0:8000"
    deploy:
      replicas: 1
      update_config:
        failure_action: rollback
        order: start-first
    healthcheck:
      test: curl --fail -s http://localhost:8000/health || exit 1
      interval: 30s
      timeout: 5s
      retries: 3
    image: registry.gitlab.com/me/myapp:a4decb1c

我通过替换堆栈文件中图像的提交哈希值来进行更新,然后运行:

docker stack deploy -c /mystack.yml myapp

如果我看到 docker service ps ,我可以看到它在旧版本仍在运行的同时启动新版本,那么在新版本通过运行状况检查后,它将杀死旧版本,很好,但是随后重新启动新服务器,并导致停机。

我做错了吗,还是不了解它应该如何工作?一旦新的健康检查通过,我确实希望它杀死旧的健康检查,但我也希望它保持健康。

0 个答案:

没有答案