Search code examples
dockerdocker-composedocker-swarm

Docker swarm - how to replicate a service on each node in the swarm


I would like to deploy a stack to a docker swarm where I want each node to run a given service.

I looked at deploy.placement configuration and the closest option I found is the placement preference spread=node.label.abc which will equally distribute the services on nodes matching the label. However this requires updating the replicas count all the time to match the number of nodes.

Is there a way to automatically deploy a service on all the nodes without manually updating the replica count?


Solution

  • Is there a way to automatically deploy a service on all the nodes without manually updating the replica count?

    Yes, deploy your service in global mode instead of replicated. Example from the link:

    version: '3'
    services:
      worker:
        image: dockersamples/examplevotingapp_worker
        deploy:
          mode: global
    

    This will run a single instance of the container on every node matching your constraints.