version: '3.8' networks: microservice-network: driver: bridge services: consul: image: consul:1.15 container_name: ari-consul restart: always ports: - "8500:8500" # Consul Web UI - "8600:8600/udp" # DNS服务 volumes: - ./consul/config/${ENV_CONFIG_DIR}:/consul/config command: "consul agent -server -bootstrap-expect=1 ${CONSUL_DEV_MODE} -config-dir=/consul/config -client=0.0.0.0" networks: - microservice-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8500/v1/status/leader"] interval: 10s timeout: 5s retries: 3 traefik: image: traefik:v2.11 container_name: ari-traefik command: - --configFile=/etc/traefik/traefik.yml ports: - "80:80" - "443:443" - "8080:8080" # Traefik dashboard volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik/config/${TRAEFIK_CONFIG_DIR}/traefik.yml:/etc/traefik/traefik.yml - ./traefik/certs:/etc/traefik/certs networks: - microservice-network