Traefik将8080端口重定向至dashboard,无法发布服务求助
问题解决步骤
1. 修复Docker Compose语法错误
你的salamandra服务最后一个标签缺少闭合双引号,导致Traefik无法正确解析路由配置,这是核心问题之一:
# 原错误配置 - "traefik.http.routers.salamandra.entrypoints=web # 修复后 - "traefik.http.routers.salamandra.entrypoints=web"
2. 彻底隔离Traefik Dashboard与Web服务端口
即使已将Dashboard入口设为:9090,Traefik仍可能对8080端口存在默认关联逻辑,需添加配置明确限定Dashboard仅绑定到指定入口:
在Traefik的command中补充以下参数:
- "--api.dashboard=true" # 明确开启Dashboard并绑定到指定入口 - "--api.insecure=false" - "--entrypoints.traefik.address=:9090" - "--entrypoints.web.address=:80"
确保Dashboard仅通过traefik入口(宿主端口4000)访问,不会干扰web入口的服务。
3. 设置路由优先级
为salamandra路由添加优先级配置,确保它优先于Traefik的默认路由匹配:
labels: - "traefik.enable=true" - "traefik.http.routers.salamandra.rule=Host(`localhost`)" - "traefik.http.routers.salamandra.entrypoints=web" - "traefik.http.routers.salamandra.priority=100" # 设为更高优先级
完整修复后的Docker Compose文件
version: "3.3" services: traefik: image: "traefik:v2.8.1" command: - "--api.insecure=false" - "--api.dashboard=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.traefik.address=:9090" - "--entrypoints.web.address=:80" ports: - "4000:9090" - "8080:80" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" salamandra: image: "salamandra" container_name: "salamandra" ports: - "5000:8080" labels: - "traefik.enable=true" - "traefik.http.routers.salamandra.rule=Host(`localhost`)" - "traefik.http.routers.salamandra.entrypoints=web" - "traefik.http.routers.salamandra.priority=100"
验证方法
- 重启服务:
docker-compose down && docker-compose up -d - 访问
http://localhost:8080,此时应正常跳转至salamandra服务 - Dashboard仍可通过
http://localhost:4000/dashboard访问
内容的提问来源于stack exchange,提问作者Aldo M. Algorry
相关产品推荐
相关产品推荐

