我正在尝试改编this以使用traefik v2,但是我失败了。所有服务都可以互相通信,并且可以正常工作,但是我无法获得为dev env工作的路线。我不明白为什么。
docker-compose.dev.command.yml:
version: '3.3'
services:
proxy:
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.swarmMode=false"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.traefik.address=:8080"
# backend:
# command: bash -c "while true; do sleep 1; done" # Infinite loop to keep container live doing nothing
backend:
command: /start-reload.sh
docker-compose.dev.labels.yml:
version: '3.3'
services:
proxy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`localhost`)"
- "traefik.http.routers.traefik.rule=PathPrefix(`/dashboard/`)"
- "traefik.http.routers.traefik.entrypoints=traefik"
backend:
labels:
- "traefik.enable=true"
- "traefik.http.routers.backend.entrypoints=web"
- "traefik.http.routers.backend.rule=Host(`localhost`) && PathPrefix(`/redoc`) || PathPrefix(`/api`) || PathPrefix(`/docs`)"
frontend:
labels:
- "traefik.enable=true"
- "traefik.http.routers.frontend.entrypoints=web"
- "traefik.http.routers.frontend.rule=Host(`localhost`) && PathPrefix(`/`)"
docker-compose.dev.networks.yml:
version: '3.3'
services:
backend:
networks:
default:
aliases:
- ${DOMAIN}
我尝试了几乎所有我能想到的东西,但我无法使它起作用。如果我检查traefik仪表板,则路由器以正确的IP:s引用了正确的服务,并且我可以手动尝试以确保它们正常工作,但路由将无法工作。
我在做什么错了?
答案 0 :(得分:0)
您缺少定义的服务标签,您的后端服务至少需要以下标签
- traefik.enable=true
- traefik.http.routers.backend.entrypoints=web
- traefik.http.services.backend.loadbalancer.server.port=${rplace with service port}
- traefik.http.routers.backend.rule=Host(`localhost`) && PathPrefix(`/redoc`) || PathPrefix(`/api`) || PathPrefix(`/docs`)
- traefik.http.routers.backend.service=backend
- traefik.docker.network=traefik
与服务重置相同,您可以阅读有关此here
的更多信息