Docker-compose: deploying service in multiple hosts

前端 未结 4 2130
耶瑟儿~
耶瑟儿~ 2020-12-23 14:02

I have a docker-compose file that deploys 8 different docker services in the same host. Is it possible to deploy it in different hosts?, I would like to deploy some service

4条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-23 14:44

    • We can do this with docker compose v3 now.

      https://docs.docker.com/engine/swarm/#feature-highlights https://docs.docker.com/compose/compose-file/

    • You have to initialize the swarm cluster using command

      $ docker swarm init

    • You can add more nodes as worker or manager -

      https://docs.docker.com/engine/swarm/join-nodes/

    • Once you have your both nodes added to the cluster, pass your compose v3 i.e deployment file to create a stack. Compose file should just contain predefined images, you can't give a Dockerfile for deployment in Swarm mode.

      $ docker stack deploy -c dev-compose-deploy.yml --with-registry-auth PL

    • View your stack services status -

      $ docker stack services PL

    • Try to use Labels & Placement constraints to put services on different nodes.

    Example "dev-compose-deploy.yml" file for your reference -

    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:
    

提交回复
热议问题