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 ,我可以看到它在旧版本仍在运行的同时启动新版本,那么在新版本通过运行状况检查后,它将杀死旧版本,很好,但是随后重新启动新服务器,并导致停机。
我做错了吗,还是不了解它应该如何工作?一旦新的健康检查通过,我确实希望它杀死旧的健康检查,但我也希望它保持健康。