我正在Docker Swarm上运行服务。这是我部署服务的步骤:
docker swarm init
docker stack deploy -c docker-compose.yml MyApplication
docker-compose.yml的内容:
version: "3"
services:
web:
image: myimage:1.0
ports:
- "9000:80"
- "9001:443"
deploy:
replicas: 3
resources:
limits:
cpus: "0.5"
memory: 256M
restart_policy:
condition: on-failure
不要说我更新了应用程序并构建了新映像myimage:2.0
。在不停机的情况下将新版本的映像部署到服务的正确方法是什么?
答案 0 :(得分:2)
您可以使用命令docker service update --image
,但是它将启动一个隐式比例为0/1的新容器。
停机时间取决于您的应用程序。
答案 1 :(得分:2)
一种实现此目的的方法是:
order
和parallelism
,例如,如果您选择order: stop-first
+ parallelism: 2
,而您的https://docs.docker.com/compose/compose-file/#update_config与{{1} },您的应用将在更新时完全停止关于这个主题,我有一些例子:
有了这个,您可以简单地再次运行parallelism
。如果服务有更改,则会对其进行更新。