Use docker-compose with docker swarm

后端 未结 2 923
一个人的身影
一个人的身影 2021-01-16 07:04

I\'m using docker 1.12.1 I have an easy docker-compose script.

version: \'2\'

services:
  jenkins-slave:
    build: ./slave
    image: jenkins         


        
相关标签:
2条回答
  • 2021-01-16 07:45

    Compose doesn't support Swarm Mode at the moment.

    When you run docker compose up on the master node, Compose issues docker run commands for the services in the Compose file, rather than docker service create - which is why the containers all run on the master. See this answer for options.

    On the second point, networks are scoped in 1.12. If you inspect your network you'll find it's been created at swarm-level, but Compose is running engine-level containers which can't see the swarm network.

    0 讨论(0)
  • 2021-01-16 07:56
    • 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:
    
    0 讨论(0)
提交回复
热议问题