Docker-compose:在多个主机上部署服务

我有一个docker-compose文件,在同一个主机上部署8个不同的docker服务。 是否有可能部署在不同的主机?,我想部署一些服务在一个主机和另一个主机remotelly。 我需要使用docker群? 或者是一个更简单的方法呢?

我已经读过,可以使用DOCKER_HOST来完成,但是如果使用这个variables来configuration/ etc / default / docker,所有的服务都将在远程主机上运行,​​而我需要的是一个远程主机中的一些服务,其他远程主机中的服务。

对于一个docker-compose.yml部署到多个主机,你需要使用独立的swarm(而不是新的swarm模式,但是这个模式正在迅速改变)。 把每个主机定义为其群的成员的swarmpipe理器,然后你可以在你的docker-compose.yml中使用约束来定义在哪些主机上运行哪些服务。

您还可以将docker-compose.yml分成几个文件,每个主机一个文件,然后运行多个docker-compose up命令,并为每个文件定义一个不同的DOCKER_HOST值。

在这两种情况下,您都需要configurationdocker安装来侦听networking,这应该通过在这些套接字上configurationTLS来完成。 本文档介绍了您需要做的事情。

您可以使用docker compose 版本3 ,该版本提供了在不使用多个撰写文件的情况下执行多主机部署的function。 您只需要为集群中的每个节点定义标签,并使用标签名称进行布局约束。

示例“dev-compose-deploy.yml”文件供您参考

 version: "3" services: nginx: image: nexus.example.com/pl/nginx-dev:latest extra_hosts: - "dev-pldocker-01:10.2.0.42” - "int-pldocker-01:10.2.100.62” - "prd-plwebassets-01:10.2.0.62” ports: - "80:8003" - "443:443" volumes: - logs:/app/out/ networks: - pl deploy: replicas: 3 labels: feature.description: “Frontend” update_config: parallelism: 1 delay: 10s restart_policy: condition: any placement: constraints: [node.role == worker] command: "/usr/sbin/nginx" viz: image: dockersamples/visualizer ports: - "8085:8080" networks: - pl volumes: - /var/run/docker.sock:/var/run/docker.sock:ro deploy: replicas: 1 labels: feature.description: "Visualizer" restart_policy: condition: any placement: constraints: [node.role == manager] networks: pl: volumes: logs: