我正在将 Traefik v2 与Docker Swarm一起使用。我想实现以下路由:
docker-compose-traefik.yml
version: "3.7"
services:
traefik:
image: "traefik:v2.0"
networks:
- traefik-net
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker.swarmMode=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:5000"
ports:
- "80:80"
- "9000:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
traefik-net:
external:
name: traefik-net
docker-compose-whoami.yml
version: "3.7"
services:
whoami:
image: "jwilder/whoami"
networks:
- traefik-net
deploy:
replicas: 3
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`mydomain.com`)"
- "traefik.http.routers.whoami.entrypoints=web"
- "traefik.http.services.whoami.loadbalancer.server.port=8000"
networks:
traefik-net:
external:
name: traefik-net
jwilder/whoami
在其Dockerfile中公开端口8000。我想将端口5000(在docker-compose-traefik.yml中定义的入口点)重定向到容器中的端口8000。
我创建了traefik-net
网络docker network create -d bridge traefik-net
。
我部署了两个堆栈:
docker-stack deploy -c docker-compose-traefik.yml Traefik
docker-stack deploy -c docker-compose-whoami.yml Whoami
当我访问mydomain.com:9000时,它会打开Traefik仪表板。当我访问mydomain.com:5000时,提示“无法访问此网站”。
我的问题是:如何将请求重定向到whoami容器内的端口5000(mydomain.com:5000)到端口8000?
答案 0 :(得分:0)
对于其他有类似问题的人,我找到了解决方案。我需要更改docker-compose-traefik.yml中的端口部分,
ports:
- "80:80"
- "9000:8080"
到
ports:
- "80:80"
- "9000:8080"
- "5000:5000" <-- add this
希望这对某人有帮助。 :)