Use docker-compose with docker swarm

后端 未结 2 927
一个人的身影
一个人的身影 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: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:
    

提交回复
热议问题