version: "3" services: consul_node0: image: consul:1.15 ports: - "8500:8500" - "8600:8600/udp" volumes: - "./data/node0:/data" restart: always command: "consul agent -server -ui -bootstrap-expect=3 -node=consul_node0 -bind '{{ GetInterfaceIP \"eth1\" }}' -data-dir /data -client 0.0.0.0 -datacenter=dc1" deploy: replicas: 1 placement: constraints: [node.role == manager] consul_node1: image: consul:1.15 ports: - "8501:8500" - "8601:8600/udp" volumes: - "./data/node1:/data" restart: always command: "consul agent -server -ui -bootstrap-expect=3 -node=consul_node1 -bind '{{ GetInterfaceIP \"eth1\" }}' -data-dir /data -client 0.0.0.0 -datacenter=dc1 -join consul_node0" depends_on: - consul_node0 deploy: replicas: 1 placement: constraints: [node.role == manager] consul_node2: image: consul:1.15 ports: - "8502:8500" - "8602:8600/udp" volumes: - "./data/node2:/data" restart: always command: "consul agent -server -ui -bootstrap-expect=3 -node=consul_node2 -bind '{{ GetInterfaceIP \"eth1\" }}' -data-dir /data -client 0.0.0.0 -datacenter=dc1 -join consul_node0" depends_on: - consul_node0 deploy: replicas: 1 placement: constraints: [node.role == manager] # command: "consul agent -dev -client 0.0.0.0" # firewall-cmd --add-port=8500/tcp --permanent ; firewall-cmd --reload # docker-compose down ; docker build ./ -t lianshufeng/consul ; docker-compose up