按照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上运行此功能,但我不确定这是否相关。我可以毫无问题地成功地将文件挂载到其他图像中。
那么我做错了什么?
答案 0 :(得分:1)
我认为你的问题是Windows。
您使用Docker for Windows还是Docker Toolbox? 如果我没记错的话,使用W7你必须使用Docker Toolbox。
我认为您的文件treafik.toml
未装入您的容器。
答案 1 :(得分:0)
我有同样的问题。
您需要在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位于同一文件夹中)