docker - Traefik v2 监听端口
问题描述
我正在使用带有 Docker Swarm 的Traefik v2 。我想实现以下路由:
- mydomain.com:9000 -> Traefik 仪表板
- mydomain.com:5000 -> 我的应用程序
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 时,它说“无法访问此站点”。
我的问题是:如何将请求重定向到端口 5000 (mydomain.com:5000) 到 whoami 容器内的端口 8000?
解决方案
对于其他有类似问题的人,我找到了解决方案。我需要更改docker-compose-traefik.yml 中的端口部分
ports:
- "80:80"
- "9000:8080"
至
ports:
- "80:80"
- "9000:8080"
- "5000:5000" <-- add this
希望这可以帮助某人。:)
推荐阅读
- flutter - Flutter中,如何在屏幕底部放置一个ListView
- terminal - 奇怪的终端提示
- c# - 是否有一种干净的方法可以从在 WSL 下运行的 dotnet 核心应用程序访问 AppData?
- apache-kafka - 需要从供应商的 Kafka 主题中将数据带回家/本地
- c# - 使用 Enterprise SingleSignon 页面和 Microsoft SignInManager 在 ASP.NET Core 中进行身份验证/授权
- javascript - 使用 id、来自 sqlite 的数据和验证实现自动完成
- unix - Unix 实用程序 du -b 与 du -h
- r - 在 R 中绘制 POSIXct 值
- javascript - 使用 react-router--dom 时如何将道具从父母传递给孙子?
- cookies - 为什么我会收到“通过指定其 SameSite 属性指示是否在跨站点请求中发送 cookie”?