【问题标题】:Traefik dashboard only on the http portTraefik 仪表板仅在 http 端口上
【发布时间】:2020-08-15 19:14:14
【问题描述】:

我试图在我的主机 IP 上公开我的 docker 服务(如 Heimdall、Plex、Tautulli 等),仅供内部使用,因此没有域名。我希望每个服务都可以通过自己的前缀访问,例如 192.168.0.100/heimdall、192.168.0.100/tautulli 等。

我希望将仪表板放在单独的端口上,例如 8080,但即使我将 8080 的入口点指定为 traefik 并将 traefik 设置为入口服务点仍然指向名为 http 的端口 80。

我的配置有问题还是 traefik 方面的问题?

docker-compose.yml

version: '3'
services:
  traefik:
    image: traefik
    container_name: traefik
    ports:
      - "80:80"
      - "8080:8080"
    restart: always
    volumes:
      - ./traefik:/etc/traefik
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

traefik.yml

entryPoints:
  http:
    address: ":80"
  traefik:
    address: ":8080"
api: {}
log:
  level: "DEBUG"
providers:
  file:
    directory: /etc/traefik/dynamic
  docker:
    endpoint: unix:///var/run/docker.sock
    exposedByDefault: false

dashboard.yml

http:
  routers:
    api:
      rule: PathPrefix(`/api`) || PathPrefix(`/dashboard`)
      entrypoints:
        - traefik
      service: api@internal

【问题讨论】:

    标签: docker docker-compose reverse-proxy traefik


    【解决方案1】:

    根据文档 (https://docs.traefik.io/v2.2/operations/api/#insecure),这可能会有所帮助:

    api:
      insecure: true
    

    它应该隐式使用带有端口 8080 的特殊入口点 traefik。 您还可以查看此以获取有关仪表板的更多信息:https://docs.traefik.io/operations/dashboard/

    编辑

    我刚刚尝试过,它在端口 8080 上使用此配置:

    docker-compose.yml

    version: '3'
    
    services:
        traefik:
            image: traefik
            container_name: traefik
            restart: always
            ports:
                - "80:80"
                - "8080:8080"
            volumes:
                - "/var/run/docker.sock:/var/run/docker.sock:ro"
                - "./dockerfiles/traefik/traefik.yml:/etc/traefik/traefik.yml:ro"
            labels:
                - "traefik.enable=true"
                - "traefik.http.routers.dashboard.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard`)"
                - "traefik.http.routers.dashboard.entrypoints=traefik"
                - "traefik.http.routers.dashboard.service=api@internal"
    

    traefik.yml(我在没有文件提供程序的情况下使用了你的):

    entryPoints:
      http:
        address: ":80"
      traefik:
        address: ":8080"
    api: {}
    log:
      level: "DEBUG"
    providers:
      docker:
        endpoint: unix:///var/run/docker.sock
        exposedByDefault: false
    

    【讨论】:

    • 即使使用 insecure: true 和名为 traefik 的端口 9000,仪表板也只能从端口 80 访问,甚至日志显示 API 和仪表板应该在入口点 traefik 下运行“添加传出跟踪中间件 api@ internal" entryPointName=traefik routerName=api@internal middlewareName=tracing middlewareType=TracingForwarde"
    • 我刚刚试了一下,效果很好。我已经用insecure: true 尝试过它,没有它可以同时与两者一起工作,只是用insecure: true 它创建3 个路由器而不是1 个和一些中间件。我的配置有点不同,也许问题可能出在文件提供程序上。我会尽快更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多