version: '3.8' services: consul-master: image: consul:latest hostname: consul-master command: > sh -c " consul agent -server -bootstrap-expect=2 -datacenter=dc1 -data-dir=/consul/data -node=consul-master -bind=192.168.1.100 -advertise=192.168.1.100 -client=0.0.0.0 -ui -log-level=INFO " ports: - "8500:8500" - "8600:8600/udp" volumes: - consul_master_data:/consul/data networks: consul-macvlan: ipv4_address: 192.168.1.100 deploy: mode: replicated replicas: 1 placement: constraints: - node.hostname == master restart_policy: condition: on-failure delay: 5s max_attempts: 3 consul-ash3c: image: consul:latest hostname: consul-ash3c command: > sh -c " consul agent -server -bootstrap-expect=2 -datacenter=dc1 -data-dir=/consul/data -node=consul-ash3c -bind=192.168.1.101 -advertise=192.168.1.101 -client=0.0.0.0 -retry-join=192.168.1.100 -ui -log-level=INFO " ports: - "8501:8500" - "8601:8600/udp" volumes: - consul_ash3c_data:/consul/data networks: consul-macvlan: ipv4_address: 192.168.1.101 deploy: mode: replicated replicas: 1 placement: constraints: - node.hostname == ash3c restart_policy: condition: on-failure delay: 5s max_attempts: 3 volumes: consul_master_data: consul_ash3c_data: networks: consul-macvlan: driver: macvlan driver_opts: parent: eth0 # 根据你的网络接口调整 ipam: config: - subnet: 192.168.1.0/24 gateway: 192.168.1.1 ip_range: 192.168.1.100/30 # 只分配 .100-.103 的IP