提问人:Amon Bazongo 提问时间:11/17/2023 最后编辑:Amon Bazongo 更新时间:11/20/2023 访问量:29
找不到 docker compose 服务的 Traefik v2 404 页面
Traefik v2 404 page not found for docker compose service
问:
下面是一个 docker compose 文件
version: "3"
networks:
vester-net:
name: vester-net
services:
traefik:
image: traefik:v2.10
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # It's not recommended mounting the docker socket into a container -> see https://github.com/wollomatic/traefik2-hardened
networks:
- vester-net
command: --api.insecure=true --providers.docker --accessLog
ports:
- 80:80
- 8080:8080
labels:
- traefik.enable=true
whoami:
image: traefik/whoami:v1.8
networks:
- vester-net
labels:
- traefik.http.routers.mywhoami.rule=(Host(`localhost`) && PathPrefix(`/whoami`))
simplified_flask:
build:
context: ./apps/score
networks:
- vester-net
labels:
- traefik.http.routers.myflask.rule=(Host(`localhost`) && PathPrefix(`/flask`))
当我去 http://localhost:8080 时,一切都很顺利:它重定向到 traefik 仪表板并且它可以工作。
当我去 http://localhost/whoami 时,一切都很顺利:我看到whoami信息
当我转到 http://localhost/flask 时,它说找不到 404 页。
我很想得到社区的支持。提前致谢。
答:
您已将 Traefik 设置为根据 URL 路径将请求路由到不同的服务。您的“404 页面未找到”错误可能是由于此服务的 Traefik 标签配置错误。
+------------------+ +-----------------+ +------------------+
| | 80, 8080 | | | |
| Traefik +----------> whoami service | | simplified_flask |
| | | | | service |
+------------------+ +-----------------+ +------------------+
^ | /whoami /flask
| | ^ ^
| | | |
| +----------------------+------------------------------+
|
+-- Traefik Dashboard (http://localhost:8080)
确保服务的 Traefik 标签配置正确。应正确定义主机和路径前缀。(localhost/烧瓶simplified_flask
traefik.http.routers.myflask.rule
- traefik.http.routers.myflask.rule=(Host(
) && PathPrefix(
))
)
使用 Traefik 仪表板检查路由器和服务。查找与您的 Flask 应用程序相对应的路由器(例如,myflask)。检查路由器是否正确配置并链接到正确的服务。
并检查 Traefik 容器 () 的日志,查看是否有任何与服务相关的错误或警告。docker logs [traefik_container_name]
simplified_flask
确保 Flask 应用程序配置为在根 () 或指定的路径前缀 () 上提供内容。如果它需要不同的基本路径,它可能会以 404 错误进行响应。
为此,请打开 Flask 应用程序代码,该代码通常位于 中的服务上下文中指定的目录中。/
/flask
simplified_flask
docker-compose.yml
你会怎么做?
我将从现有的 Traefik-Flask 教程/示例开始,然后对其进行修改以匹配我的用例。
例如,从 testdrivenio/flask-docker-traefik
开始,提出一个很好的起点。
此外,Paul Marriott 的文章“Flask、Gunicorn、Docker 和 Traefik”可以为您提供一些想法。
评论
改变
traefik.http.routers.myflask.rule=(Host(`localhost`) && PathPrefix(`/flask`))
自
traefik.http.routers.simplified_flask.rule=(Host(`localhost`) && PathPrefix(`/flask`))
这样一来,Traefik 就知道要路由到什么服务
评论