docker-compose - docker-compose 上的 Traefik 间歇性 404
问题描述
我在 traefik 反向代理后面运行一堆服务。我已经测试了这些服务,它们工作得很好。问题是当涉及到 traefik 时,无论我与它们交互时都会出现间歇性 404 错误。
其中一项服务公开了一个漂亮而简单的 REST api。消费代码必须重试所有请求。这是可控的。
其中一项服务公开了一个前端:如果我想使用前端,我必须不断刷新页面。这是一个真正令人敬畏的用户体验。
以下是我的撰写文件中的一些示例:
version: "2.1"
services:
reverse-proxy:
image: traefik:v2.2
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "8081:80"
- "8082:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
api_service:
image: its_just_a_flask_app
labels:
- "traefik.enable=true"
- "traefik.http.routers.configrouter1.rule=PathPrefix(`/config_backend/`) && (Method(`GET`) || Method(`POST`))"
- "traefik.http.routers.configrouter1.middlewares=config-backend-auth@docker"
- "traefik.http.middlewares.config-backend-auth.basicauth.usersfile=/config/usersfile"
webserver:
image: puckel/docker-airflow:with_a_few_lil_tweaks
restart: always
depends_on:
- postgres # these exist and work fine
- redis
environment:
- LOAD_EX=n
- FERNET_KEY=stuff=
- EXECUTOR=Celery
- AIRFLOW__WEBSERVER__BASE_URL=http://webserver/airflow
volumes:
- ../orchistrator/dags/:/usr/local/airflow/dags
- ./requirements.txt:/requirements.txt
command: webserver
healthcheck:
test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
interval: 30s
timeout: 30s
retries: 3
labels:
- "traefik.enable=true"
- "traefik.http.routers.aurflowrouter.rule=PathPrefix(`/airflow`)"
- "traefik.http.routers.aurflowrouter.middlewares=airflow-basic-auth@docker"
- "traefik.http.middlewares.airflow-basic-auth.basicauth.usersfile=/config/usersfile"
- traefik.http.services.my-service.loadbalancer.server.port=8080
- 如您所见,这两个都使用基本身份验证。删除身份验证无效
- 删除网络服务器的健康检查没有效果
- 对api_service进行api调用时,第一次调用经常失败,第二次调用总是成功
- 访问气流前端时:第一页加载失败,之后成功。
- 在触发 POST 的气流前端有一个按钮。POST 返回一个 302 Found,然后重定向总是首先给我一个 404
- 有时 Web 前端加载,但它所依赖的静态资源不加载,导致网站丑陋且无法使用。所以我发现自己经常刷新页面
我在这里不知所措。任何帮助将不胜感激。
我尝试过的 Traefik 标签:
到目前为止,我收到或发现的唯一建议是关于使用旧标签或新标签,这就是我发现的
image: traefik:v2.2
image: traefik:v2.2.1
image: traefik:v2.2.5
image: traefik:latest
解决方案
原来这是一个错误v2.2.2
。请参阅此处了解更多信息。例如,使用v2.2.5
来摆脱这个问题
推荐阅读
- c - 我想访问和求和指针数组的值,但我得到了错误的值
- kotlin - 函数式编程短路
- c# - 使用“对象”属性是正确的做法吗?
- c# - WPF 如何从用户控件中的另一个控件获取控件?
- javascript - ThreeJS 转向纹理
- python - 如何更改 url 路由器 DRF 中的参数名称?
- perl - 在连接中使用未初始化的值 $ENV{"IR"}
- php - Yii2模型排除相关记录
- c++ - 在 Windows 10 上使用 Visual Studio 2019 的 Boost 1.71.0 库出现错误
- angular - 我们如何在角度服务中使用 forwardRef 来避免循环依赖?