搬运工-compose.yml
version: "3"
services:
daggr:
image: "docker.pvt.com/test/daggr:stable"
hostname: '{{.Node.Hostname}}'
deploy:
mode: global
resources:
limits:
cpus: "2"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
networks:
- webnet
networks:
webnet:
现在,我正在使用以下命令部署docker容器:
docker stack deploy -c docker-compose.yml daggrstack
有没有办法在docker-compose.yml文件中指定如果图像docker.pvt.com/test/daggr:stable
更新(即docker build,docker tag和docker push:stable),那么运行的容器会自动生成使用更新的图像重新部署?
所以,每当我推动一个新的泊坞窗图像时,我都不必重新运行docker stack deploy
答案 0 :(得分:2)
有没有办法在docker-compose.yml文件中指定,如果图像,docker.pvt.com/test/daggr:stable, 更新(即docker build,docker tag和docker push:stable),然后使用更新的图像自动重新部署正在运行的容器?
答案是否定的。当新图像可用时,Docker swarm不会自动更新服务。这应作为持续部署系统的一部分来处理。
但是,Docker确实可以轻松更新已经运行的服务的图像。
如Apply rolling updates to a service所述,您可以通过以下方式更新服务的图像:
docker service update --image docker.pvt.com/test/daggr:stable daggr