【问题标题】:Traefik dashboad is not showing when port 8080 is not open当端口 8080 未打开时,Traefik 仪表板未显示
【发布时间】:2019-02-14 01:52:22
【问题描述】:

我正在学习 traefik,我尝试在不打开端口 8080 的情况下设置仪表板。

通过下面的配置,我可以访问仪表板。

docker-compose.yml

version: '3'

services:
  reverse-proxy:
    image: traefik:1.7.9-alpine
    restart: unless-stopped
    networks:
      - mynet
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/traefik/traefik.toml:/traefik.toml
networks:
  mynet:
    external: true

traefik.toml

[entryPoints]
    [entryPoints.http]
    address = ":80"

[api]

[docker]

一旦我从 docker-compose.yml 中删除端口 8080,我就无法再访问它了。

让这个非常简单的设置正常工作还缺少哪些部分?

【问题讨论】:

    标签: docker docker-compose traefik


    【解决方案1】:

    感谢 Marvin 的帮助,我成功了:

    docker-compose.yml

    version: '3'
    
    services:
      reverse-proxy:
        image: traefik:1.7.9-alpine
        restart: unless-stopped
        networks:
          - mynet
        ports:
          - "80:80"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /opt/traefik/traefik.toml:/traefik.toml
    networks:
      mynet:
        external: true
    

    traefik.toml

    [entryPoints]
     [entryPoints.http]
      address = ":80"
    
    [api]
    dashboard = true
    
    [file]
      [backends]
        [backends.traefik]
          [backends.traefik.servers.server]
          url = "http://127.0.0.1:8080"
    
      [frontends]
        [frontends.traefik]
        entryPoints = ["http"]
        backend = "traefik"
          [frontends.traefik.routes.traefik]
          rule = "PathPrefixStrip:/traefik;PathPrefix:/traefik"
    
    [docker]
    

    转到 yourdomain.tld/traefik 会显示仪表板!

    【讨论】:

      【解决方案2】:

      仪表板的 url 默认为 {your ip}:8080

      我认为您可能在这里混淆了:您修改的入口点是“http”,而不是“api”。因此有了这个conf,你仍然需要通过8080访问dashboard。

      如果您想改变这一事实,请为 api 添加一个入口点(例如“foo”),并将 entryPoints.foo 设置为匹配的配置。

      [entryPoints]
        [entryPoints.http]
        address = ":8090"
      
        [entryPoints.foo]
        address = ":80"
      
      [api]
      entryPoint = "foo"
      

      但是正如你所看到的,你失去了“http”默认端口......这很烦人。所以,我想你可以保留 8080 或者在这里改用一个不太容易猜到的。

      这主要来自this part of the doc

      【讨论】:

      • 谢谢 Marvin,有没有办法让 80 正常使用,仪表板仍在 8080 上,并且带有前缀的规则:/dashboard 路由到仪表板?
      • 这是一个很好的问题...我尝试了一些设置,但没有成功。不过,Birkhoff Lee 似乎已经做到了:blog.birkhoff.me/…也许你会比我更幸运
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多