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

Asi*_*mez 30 docker dockerfile docker-compose docker-swarm

我有一个docker-compose文件,它在同一主机中部署了8种不同的docker服务.是否可以将其部署在不同的主机中?,我想在一个主机中部署一些服务,在其他主机远程部署另一个服务.我需要使用docker-swarm吗?或者是一种更简单的方法吗?

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

viv*_*d4v 14

示例"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:
Run Code Online (Sandbox Code Playgroud)


BMi*_*tch 11

对于要部署到多个主机的单个docker-compose.yml,您需要使用独立群(不是更新的群模式,但这种情况正在迅速变化).启动一个swarm管理器,将每个主机定义为其swarm的成员,然后您可以使用docker-compose.yml中的约束来定义在哪些主机上运行哪些服务.

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

在这两种情况下,您都需要配置docker安装以在网络上侦听,这应该通过在这些套接字上配置TLS来完成.本文档描述了您需要为此做些什么.


小智 5

您可以使用docker compose 版本3,该版本提供了无需使用多个撰写文件即可进行多主机部署的功能。您所需要做的就是为集群中的每个节点定义标签,并将标签名称用于放置约束。