使用docker compose时如何设置服务模式?

how to set the service mode when using docker compose?

我需要在使用撰写文件时将服务模式设置为全局。

我们有机会在撰写文件中使用它吗? 我有一个要求,对于一项服务,每个 node/host 上应该只有一个容器。

Swarm 的 "spread strategy" 如果一个节点出现故障和出现,则不会发生这种情况,它只是在每个主机上获得相同数量的容器,而不管服务如何。

https://github.com/docker/compose/issues/3743

我们现在可以使用部署(模式)部分下的 docker compose v3(版本 3)轻松完成此操作。

先决条件 -

docker compose version should be 1.10.0+

docker engine version should be 1.13.0+

示例撰写文件 -

version: "3"

  services:
    nginx:
      image: nexus3.example.com/prd-nginx-sm:v1
      ports:
        - "80:80"
      networks:
        - cheers
      volumes:
        - logs:/rest/out/
      deploy:
        mode: global
        labels:
          feature.description: "Frontend"
        update_config:
          parallelism: 1
          delay: 10s
        restart_policy:
          condition: any
      command: "/usr/sbin/nginx"

networks:
  cheers:

volumes:
  logs:
  data:

部署合成文件-

$ docker stack deploy -c sm-deploy-compose.yml --with-registry-auth CHEERS

这将在参与集群的所有节点上部署 nginx 容器。