ealeon
ealeon

Reputation: 12452

Docker: Option for automatic redeployment in docker-compose.yml for new image pushed

docker-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:

Right now, I am deploying docker containers with the below command:

docker stack deploy -c docker-compose.yml daggrstack

Is there way to specify in docker-compose.yml file that if the image, docker.pvt.com/test/daggr:stable, is updated (ie. docker build, docker tag, and docker push :stable), then the running containers are automatically re-deployed with the updated image?

So, i dont have to re-run docker stack deploy every time i pushed a new docker image

Upvotes: 0

Views: 777

Answers (1)

yamenk
yamenk

Reputation: 51768

Is there way to specify in docker-compose.yml file that if the image, docker.pvt.com/test/daggr:stable, is updated (ie. docker build, docker tag, and docker push :stable), then the running containers are automatically re-deployed with the updated image?

The answer is No. Docker swarm does not auto-update the service when a new image is available. This should handled as part a continuous deployment system.

However, Docker does make it easy to update the images of already running services.

As described in Apply rolling updates to a service, you can update the image of a services, via:

docker service update --image docker.pvt.com/test/daggr:stable daggr

Upvotes: 2

Related Questions