首页 > 解决方案 > 在 play-with-docker.com 上测试 traefik

问题描述

在我自己的私人服务器上运行它之前,我尝试测试并使用traefik 。play-with-docker.com

但是,我无法获得一个使用 2 个容器的简单示例,请参阅docker-compose.yml下面的文件。容器都以up在其日志中没有任何错误的情况下启动。我可以在端口 80 上看到带有 subpath的traefik 仪表板/traefik。但是我看不到带有子路径的端口 80 上的dozzle/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"

编辑 13.07.2019 - 附加信息

我在本地机器上使用 Docker Toolbox 尝试了 compose 文件的简化版本。还是同样的问题。如果我在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 等。

标签: dockertraefik

解决方案


如果我理解 dozzle 命令行选项“ --base=/doozle ”,则应该通过路径到达后端

:8083/dozzle

但是在您的前端规则中,您从初始请求中删除/删除“/doozle”:

"traefik.frontend.rule=PathPrefixStrip:/dozzle"

因此,您应该只使用PathPrefix代替。


推荐阅读