在 play-docker.com 上测试 traefik
Testing traefik on play-with-docker.com
我尝试在 play-with-docker.com
上测试和使用 traefik,然后在我自己的私人服务器上 运行 它。
但是我无法得到一个使用 2 个容器的简单示例,请参阅下面的 docker-compose.yml
文件。容器都以 up
开头,日志中没有任何错误。我可以在端口 80 上看到带有子路径 /traefik
的 traefik dashboard。但是我在子路径 /dozzle
.
的端口 80 上看不到 dozzle
我的配置有什么问题?
还是 traefik 在 play-with-docker.com
上根本无法正常工作?
如果我取消注释 ports
部分,我可以在端口 8083 上看到 dozzle - 但这不是我想要的,那么我正在绕过 traefik...
感谢所有提示...
---
version: '3.5'
networks:
proxy:
name: proxy
driver: bridge
web:
name: web
driver: bridge
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--logLevel=INFO"
- "--api"
- "--defaultentrypoints=http"
- "--docker"
- "--docker.watch"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
- web
ports:
- "80:80"
labels:
- "traefik.enable=true"
- "traefik.backend=traefik"
- "traefik.frontend.rule=PathPrefixStrip:/traefik"
- "traefik.port=8080"
- "traefik.docker.network=proxy"
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
command:
- "--level=DEBUG"
- "--base=/dozzle"
- "--addr=:8083"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# ports:
# - 8083:8083
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.backend=dozzle"
- "traefik.frontend.rule=PathPrefixStrip:/dozzle"
- "traefik.port=8083"
- "traefik.docker.network=proxy"
编辑 2019 年 7 月 13 日 - 附加信息
我使用 Docker 工具箱在我的本地机器上尝试了一个简化版本的撰写文件。还是一样的问题。如果我在 http://192.168.99.100/dozzle
上,我得到一个空白的白页,在 http://192.168.99.100
上,我得到一个 404
错误。
这是简化版:
---
version: '3.5'
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--docker"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=PathPrefixStrip:/dozzle"
- "traefik.port=8080"
如果我在浏览器中切换到源代码视图,我在 http://192.168.99.100/dozzle
上获得的空白页面包含一个 HTML 页面。但是,只显示一个空白的白页。我假设无法解析 HTML 代码中的相关链接,因此无法加载 css、js 等。
尝试将其添加到您的 traefik 服务的端口部分:
ports:
- '80:80'
- '443:443'
- '8080:8080'
然后为你的 Dozzle 试试这个:
- traefik.port=80
这可能是个人问题,但我总是将 'web' 网络用作外部网络。
如果我理解 dozzle 命令行选项“--base=/doozle”,应该通过路径
到达后端
:8083/dozzle
但是在您的前端规则中,您从初始请求中删除/删除了“/doozle”:
"traefik.frontend.rule=PathPrefixStrip:/dozzle"
因此,您应该只使用 PathPrefix。
我找到了一个现在有效的解决方案。感谢所有提示。也许我同时更改了很多选项;-(
此撰写文件有效:
---
version: '3.5'
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--docker"
- "--logLevel=INFO"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
command:
- "--base=/dozzle"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=PathPrefix:/dozzle"
- "traefik.port=8080"
现在我在 http://192.168.99.100/dozzle
上看到 Dozzle,例如转发到 http://192.168.99.100/dozzle/container/9b03de0e20a8
。
作为参考,Dozzle 将使用 addr 参数侦听不同的端口;所以对于 traefik 2.0,这个组合有效
# Dozzle - Real-time Docker Log Viewer
dozzle:
hostname: 'dozzle'
container_name: dozzle
image: amir20/dozzle:latest
environment:
- 'PGID=${ID}'
- 'PUID=${ID}'
- 'TZ=${TZ}'
- 'UMASK=022'
- DOZZLE_LEVEL=info
- DOZZLE_TAILSIZE=300
# - DOZZLE_FILTER="status=running"
restart: unless-stopped
networks:
- proxy
command:
- "--addr=:9999"
security_opt:
- 'no-new-privileges:true'
ports:
- '127.0.0.1:9999:9999'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro' # Use Docker Socket Proxy instead for improved security
labels:
- "traefik.enable=true"
- 'traefik.docker.network=proxy'
- 'dockupdater.enable=true'
## HTTP Routers
- 'traefik.http.routers.dozzle-rtr.entrypoints=https'
- 'traefik.http.routers.dozzle-rtr.rule=Host(`dozzle.${DOMAIN}`)'
- 'traefik.http.routers.dozzle-rtr.tls=true'
- 'traefik.http.routers.dozzle-rtr.tls.certresolver=dns-cloudflare'
## Middlewares
- 'traefik.http.routers.dozzle-rtr.middlewares=chain-authelia@file'
## HTTP Services
- 'traefik.http.routers.dozzle-rtr.service=dozzle-svc'
- 'traefik.http.services.dozzle-svc.loadbalancer.server.port=9999'
我尝试在 play-with-docker.com
上测试和使用 traefik,然后在我自己的私人服务器上 运行 它。
但是我无法得到一个使用 2 个容器的简单示例,请参阅下面的 docker-compose.yml
文件。容器都以 up
开头,日志中没有任何错误。我可以在端口 80 上看到带有子路径 /traefik
的 traefik dashboard。但是我在子路径 /dozzle
.
我的配置有什么问题?
还是 traefik 在 play-with-docker.com
上根本无法正常工作?
如果我取消注释 ports
部分,我可以在端口 8083 上看到 dozzle - 但这不是我想要的,那么我正在绕过 traefik...
感谢所有提示...
---
version: '3.5'
networks:
proxy:
name: proxy
driver: bridge
web:
name: web
driver: bridge
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--logLevel=INFO"
- "--api"
- "--defaultentrypoints=http"
- "--docker"
- "--docker.watch"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
- web
ports:
- "80:80"
labels:
- "traefik.enable=true"
- "traefik.backend=traefik"
- "traefik.frontend.rule=PathPrefixStrip:/traefik"
- "traefik.port=8080"
- "traefik.docker.network=proxy"
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
command:
- "--level=DEBUG"
- "--base=/dozzle"
- "--addr=:8083"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# ports:
# - 8083:8083
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.backend=dozzle"
- "traefik.frontend.rule=PathPrefixStrip:/dozzle"
- "traefik.port=8083"
- "traefik.docker.network=proxy"
编辑 2019 年 7 月 13 日 - 附加信息
我使用 Docker 工具箱在我的本地机器上尝试了一个简化版本的撰写文件。还是一样的问题。如果我在 http://192.168.99.100/dozzle
上,我得到一个空白的白页,在 http://192.168.99.100
上,我得到一个 404
错误。
这是简化版:
---
version: '3.5'
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--docker"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=PathPrefixStrip:/dozzle"
- "traefik.port=8080"
如果我在浏览器中切换到源代码视图,我在 http://192.168.99.100/dozzle
上获得的空白页面包含一个 HTML 页面。但是,只显示一个空白的白页。我假设无法解析 HTML 代码中的相关链接,因此无法加载 css、js 等。
尝试将其添加到您的 traefik 服务的端口部分:
ports:
- '80:80'
- '443:443'
- '8080:8080'
然后为你的 Dozzle 试试这个:
- traefik.port=80
这可能是个人问题,但我总是将 'web' 网络用作外部网络。
如果我理解 dozzle 命令行选项“--base=/doozle”,应该通过路径
到达后端:8083/dozzle
但是在您的前端规则中,您从初始请求中删除/删除了“/doozle”:
"traefik.frontend.rule=PathPrefixStrip:/dozzle"
因此,您应该只使用 PathPrefix。
我找到了一个现在有效的解决方案。感谢所有提示。也许我同时更改了很多选项;-(
此撰写文件有效:
---
version: '3.5'
services:
traefik:
image: traefik
container_name: traefik
restart: always
command:
- "--docker"
- "--logLevel=INFO"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
dozzle:
image: amir20/dozzle
container_name: dozzle
restart: always
depends_on:
- traefik
command:
- "--base=/dozzle"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=PathPrefix:/dozzle"
- "traefik.port=8080"
现在我在 http://192.168.99.100/dozzle
上看到 Dozzle,例如转发到 http://192.168.99.100/dozzle/container/9b03de0e20a8
。
作为参考,Dozzle 将使用 addr 参数侦听不同的端口;所以对于 traefik 2.0,这个组合有效
# Dozzle - Real-time Docker Log Viewer
dozzle:
hostname: 'dozzle'
container_name: dozzle
image: amir20/dozzle:latest
environment:
- 'PGID=${ID}'
- 'PUID=${ID}'
- 'TZ=${TZ}'
- 'UMASK=022'
- DOZZLE_LEVEL=info
- DOZZLE_TAILSIZE=300
# - DOZZLE_FILTER="status=running"
restart: unless-stopped
networks:
- proxy
command:
- "--addr=:9999"
security_opt:
- 'no-new-privileges:true'
ports:
- '127.0.0.1:9999:9999'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro' # Use Docker Socket Proxy instead for improved security
labels:
- "traefik.enable=true"
- 'traefik.docker.network=proxy'
- 'dockupdater.enable=true'
## HTTP Routers
- 'traefik.http.routers.dozzle-rtr.entrypoints=https'
- 'traefik.http.routers.dozzle-rtr.rule=Host(`dozzle.${DOMAIN}`)'
- 'traefik.http.routers.dozzle-rtr.tls=true'
- 'traefik.http.routers.dozzle-rtr.tls.certresolver=dns-cloudflare'
## Middlewares
- 'traefik.http.routers.dozzle-rtr.middlewares=chain-authelia@file'
## HTTP Services
- 'traefik.http.routers.dozzle-rtr.service=dozzle-svc'
- 'traefik.http.services.dozzle-svc.loadbalancer.server.port=9999'