project/
├─ docker-compose.yml
├─ traefik/
│ ├─ traefik.yml # 静态配置
│ └─ dynamic.yml # 动态配置(路由和服务)


# docker-compose.yml
version: "3"

services:
  traefik:
    image: traefik:v3.1
    container_name: traefik
    ports:
      - "8081:8081"      # Traefik HTTP 内部入口(1Panel反代到这个端口)
      - "8080:8080"      # Dashboard
    volumes:
      - ./traefik/traefik.yml:/etc/traefik/traefik.yml:ro
      - ./traefik/dynamic.yml:/etc/traefik/dynamic.yml:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

  service-a:
    image: traefik/whoami
    container_name: service-a

  service-b:
    image: traefik/whoami
    container_name: service-b

# traefik.yml
entryPoints:
  web:
    address: ":8081"

providers:
  file:
    filename: /etc/traefik/dynamic.yml   # 挂载到容器内的路径

api:
  dashboard: true
  insecure: true
# dynamic.yml
http:
  routers:
    user-router:
      rule: "Host(`www.example`) && PathPrefix(`/api/user`)"
      service: service-a
      entryPoints:
        - web

    tool-router:
      rule: "Host(`www.example`) && PathPrefix(`/api/tool`)"
      service: service-b
      entryPoints:
        - web

  services:
    service-a:
      loadBalancer:
        servers:
          - url: "http://service-a:8080"
    service-b:
      loadBalancer:
        servers:
          - url: "http://service-b:8080"
作者:admin  创建时间:2025-09-16 20:44
最后编辑:admin  更新时间:2025-09-19 10:08