【问题标题】:Why is Traefik not reading my traefik.toml file when running with Docker?为什么 Traefik 在使用 Docker 运行时没有读取我的 traefik.toml 文件?
【发布时间】:2017-10-11 10:36:58
【问题描述】:

按照official Docker image 中提到的步骤,我似乎无法让 Traefik 读取我的traefik.toml 文件。

这行得通

来自docker-compose.yml

version: '3'

services:
  proxy:
    image: traefik:1.3.5
    command: --docker --docker.domain=docker.localhost --logLevel=DEBUG
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      #- ./traefik.toml:/traefik.toml

  whoami:
    image: emilevauge/whoami
    labels:
      - "traefik.backend=whoami"
      - "traefik.frontend.rule=PathPrefix:/whoami"

请注意,没有挂载配置文件,所有配置都作为参数传递。

现在,如果我运行 docker-compose up,我会看到来自 Traefik 的一堆调试语句。如果我测试应用程序,它可以工作(是的,我正在运行 Windows 7):

$ curl 'http://192.168.99.100:80/whoami'
Hostname: c94bec5d0e3e
IP: 127.0.0.1
IP: 172.19.0.3
GET /whoami HTTP/1.1
Host: 192.168.99.100
User-Agent: curl/7.50.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 192.168.99.1
X-Forwarded-Host: 192.168.99.100
X-Forwarded-Proto: http
X-Forwarded-Server: b8946b1c34a1

这不起作用

来自docker-compose.yml

version: '3'

services:
  proxy:
    image: traefik:1.3.5
    #command: --docker --docker.domain=docker.localhost --logLevel=DEBUG
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/etc/traefik/traefik.toml

  whoami:
    image: emilevauge/whoami
    labels:
      - "traefik.backend=whoami"
      - "traefik.frontend.rule=PathPrefix:/whoami"

请注意,没有参数被传递到 Traefik,只有配置文件。

现在,如果我运行 docker-compose up,则不会出现任何日志语句。如果我测试应用程序,我会得到 404:

$ curl 'http://192.168.99.100:80/whoami'
404 page not found

当然,没有任何调试语句,很难知道哪里出了问题。

这是我的traefik.toml 文件:

debug = true
logLevel = "DEBUG"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "docker.localhost"
watch = true
exposedbydefault = false

我尝试将文件挂载到/etc/traefik/traefik.toml/traefik.toml,结果相同。

我也尝试运行official example 中提到的示例,结果相似。

我在 Windows 7 上运行它,但我不确定这是否相关。我可以成功地将文件挂载到其他图像中而不会出现问题。

那我做错了什么?

【问题讨论】:

  • 也可以发布您的 Traefik.toml,哦应该睁开我的眼睛.. sry

标签: docker traefik


【解决方案1】:

我认为你的问题是 Windows。

您使用 Docker for Windows 还是 Docker Toolbox? 如果我没记错的话,使用 W7 你必须使用 Docker Toolbox。

我认为您的文件 treafik.toml 未安装到您的容器中。

【讨论】:

  • 恐怕你是完全正确的。是的,我正在使用 Docker Toolbox。我尝试了以下实验:Dockerfile:FROM traefik COPY ./traefik.toml / ... 并将我的docker-compose.yml 更改为使用build: . 而不是image: ... 然后运行docker-compose build && docker-compose up。果然,它有效!日志状态“使用 TOML 配置文件 //traefik.toml”,因此显然存在安装问题。叹息……
  • Windows 上的 Docker 似乎存在一个错误,其中相对路径不起作用:forums.docker.com/t/… 该错误似乎已在 Docker for Windows (Windows 10) 上修复,但未在 Docker Toolbox 上修复 ( Windows 7)。
【解决方案2】:

我遇到了同样的问题。 您需要在 traefik.toml 中指定 entryPoints 部分

# traefik.toml
debug = true
logLevel = "DEBUG"

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

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "docker.localhost"
watch = true
exposedbydefault = false

并安装它:

volumes:
   - ./traefik.toml:/etc/traefik/traefik.toml

(当然如果 docker-compose.yml 和 traefik.toml 在同一个文件夹)

【讨论】:

    猜你喜欢
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2023-01-22
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多