You need to enable JavaScript to run this app. 使用Traefik和docker-compose配置端口转发出现404错误问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用Traefik和docker-compose配置端口转发出现404错误问题咨询

问题根因

  • 未给Traefik UI本身配置路由规则,traefik.service.localhost没有对应转发规则,自然返回404
  • api-service的Traefik配置缺失端口指定规则,Traefik不知道要转发到容器的哪个端口
  • 当前访问带8080端口的地址是直接访问Traefik暴露的管理端口,没有经过Traefik的80端口路由逻辑

修正后的完整配置

version: '3.8'

services:

  reverse-proxy:
    image: traefik:v2.4
    container_name: reverse-proxy
    command: 
      - "--api.insecure=true"
      - "--providers.docker"
      # 显式定义entrypoint,方便后续引用
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      # 如果不需要直接通过8080端口访问Traefik UI,可以注释掉下面这行
      - "8080:8080"
    labels:
      - traefik.enable=true
      - traefik.docker.network=pred-network
      # 配置Traefik UI的路由规则
      - traefik.http.routers.traefik-ui.rule=Host(`traefik.service.localhost`)
      - traefik.http.routers.traefik-ui.entrypoints=web
      # 指定转发到Traefik自身的8080端口
      - traefik.http.services.traefik-ui.loadbalancer.server.port=8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - pred-network


  api-service:
    image: x86_64/prediction-service:0.8.1
    container_name: api-service
    environment:
      SERVING_SERVICE: model-service
    expose:
      - 80
    labels:
      - traefik.enable=true
      - traefik.docker.network=pred-network
      - traefik.http.routers.api-service.rule=Host(`api.service.localhost`)
      - traefik.http.routers.api-service.entrypoints=web
      # 指定转发到api-service容器的80端口
      - traefik.http.services.api-service.loadbalancer.server.port=80
    networks:
      - pred-network

networks:
  pred-network:

前置配置验证

需要先在本地hosts文件添加两条解析记录:

127.0.0.1 traefik.service.localhost
127.0.0.1 api.service.localhost

Windows系统hosts路径:C:\Windows\System32\drivers\etc\hosts
Linux/Mac系统hosts路径:/etc/hosts


生效步骤

  1. 先停止并删除原有容器和网络,避免旧配置缓存:
docker-compose down -v
  1. 重新启动服务:
docker-compose up -d
  1. 等待10秒左右即可测试:
  • 访问http://traefik.service.localhost 可直接打开Traefik UI
  • 访问http://api.service.localhost 可打开api-service的Hello World页面
  • 所有请求均走Traefik 80端口路由,不需要额外暴露api-service的端口

内容的提问来源于stack exchange,提问作者illuminato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:36:08