Docker:在docker-compose.yml中自动重新部署的选项,用于推送新图像

时间:2018-04-06 09:56:11

标签: docker docker-compose

搬运工-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

1 个答案:

答案 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