在traefik配置中添加docker provider并设置exposedByDefault为false,同时在docker-compose中挂载docker.sock以支持容器发现
128 lines
2.8 KiB
YAML
128 lines
2.8 KiB
YAML
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:/consul/config
|
||
command: "consul agent -dev -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
|
||
command:
|
||
- --configFile=/etc/traefik/traefik.yml
|
||
ports:
|
||
- "80:80"
|
||
- "8080:8080" # Traefik dashboard
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
- ./traefik/traefik.yml:/etc/traefik/traefik.yml
|
||
|
||
data-service:
|
||
build: ./services/data-service
|
||
container_name: ari-data-service
|
||
restart: always
|
||
depends_on:
|
||
consul:
|
||
condition: service_healthy
|
||
expose:
|
||
- "8000"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=data-service
|
||
|
||
quant-service:
|
||
build: ./services/quant-service
|
||
container_name: ari-quant-service
|
||
restart: always
|
||
depends_on:
|
||
consul:
|
||
condition: service_healthy
|
||
expose:
|
||
- "8001"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=quant-service
|
||
|
||
emotion-service:
|
||
build: ./services/emotion-service
|
||
container_name: ari-emotion-service
|
||
restart: always
|
||
depends_on:
|
||
consul:
|
||
condition: service_healthy
|
||
expose:
|
||
- "8002"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=emotion-service
|
||
|
||
recommend-service:
|
||
build: ./services/recommend-service
|
||
container_name: ari-recommend-service
|
||
restart: always
|
||
depends_on:
|
||
consul:
|
||
condition: service_healthy
|
||
expose:
|
||
- "8003"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=recommend-service
|
||
|
||
user-service:
|
||
build: ./services/user-service
|
||
container_name: ari-user-service
|
||
restart: always
|
||
depends_on:
|
||
consul:
|
||
condition: service_healthy
|
||
expose:
|
||
- "8004"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=user-service
|
||
|
||
frontend:
|
||
build: ./services/frontend
|
||
container_name: ari-frontend
|
||
restart: always
|
||
depends_on:
|
||
- data-service
|
||
- quant-service
|
||
- emotion-service
|
||
- recommend-service
|
||
- user-service
|
||
expose:
|
||
- "80"
|
||
networks:
|
||
- microservice-network
|
||
environment:
|
||
- SERVICE_NAME=frontend
|
||
|
||
whoami:
|
||
image: traefik/whoami
|
||
expose:
|
||
- "80" # 可选,Traefik 可以自动发现,不暴露到宿主机
|