Traefik无法路由流量至Docker Compose部署的wallet-service问题
Traefik路由Docker容器流量失败问题
主机可通过curl http://localhost:3000直接访问wallet-service容器,但Traefik尝试连接Docker内部IP192.168.64.4:3000而非映射的主机端口,导致流量无法正常路由。
已尝试的操作
- 配置Traefik标签:指定服务内部端口,确认服务与Traefik处于同一Docker网络
- 验证服务可访问性:本地
curl http://localhost:3000能得到正确响应,确认wallet-service监听0.0.0.0接口 - 检查Traefik日志:启用调试日志与访问日志,观察到Traefik尝试连接
192.168.64.4:3000
尽管进行了上述操作,Traefik仍无法将流量路由至wallet-service。
Docker Compose配置
version: '3.8' services: wallet-service: ports: - '3000:3000' labels: - 'traefik.enable=true' - 'traefik.http.routers.wallet-service.rule=Host(`${DOMAIN}`)' - 'traefik.http.routers.wallet-service.entrypoints=websecure' - 'traefik.http.routers.wallet-service.tls.certresolver=myresolver' - 'traefik.http.services.wallet-service.loadbalancer.server.port=3000' networks: - internal-network - traefik-public caller-service: ports: - '3001:3001' labels: - 'traefik.enable=true' - 'traefik.http.routers.caller-service.rule=Host(`caller.${DOMAIN}`)' - 'traefik.http.routers.caller-service.entrypoints=websecure' - 'traefik.http.routers.caller-service.tls.certresolver=myresolver' networks: - internal-network - traefik-public postgres: image: postgres:13 ports: - '5432:5432' networks: - internal-network rabbitmq: image: rabbitmq:3-management ports: - '5672:5672' - '15672:15672' labels: - 'traefik.enable=true' - 'traefik.http.routers.rabbitmq.rule=Host(`rabbitmq.${DOMAIN}`)' - 'traefik.http.routers.rabbitmq.entrypoints=websecure' - 'traefik.http.routers.rabbitmq.tls.certresolver=myresolver' networks: - internal-network - traefik-public volumes: postgres-data: name: wallet-postgres-data networks: internal-network: driver: bridge traefik-public: external: true
Traefik配置
services: traefik: image: traefik:v2.9 command: - "--api=true" - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.myresolver.acme.tlschallenge=true" - "--certificatesresolvers.myresolver.acme.email=sesto@post.com" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" - "--log.level=DEBUG" # Increase log verbosity - "--accesslog=true" # Enable access logs - "--accesslog.filepath=/var/log/traefik/access.log" - "--log.filepath=/var/log/traefik/traefik.log" ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./letsencrypt:/letsencrypt" - "./logs:/var/log/traefik" # Mount a volume for logs networks: - traefik-public networks: traefik-public: external: true name: traefik-public
相关日志
访问公网域名时,Traefik尝试连接192.168.64.4:3000,该地址与主机端口映射不符。但主机本地直接访问可获得预期响应:
curl http://localhost:3000 Service is running!
内容的提问来源于stack exchange,提问作者Slowfound
相关产品推荐
相关产品推荐

