0

我在 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
4

2 回答 2

0

原来这是一个错误v2.2.2。请参阅此处了解更多信息。例如,使用v2.2.5来摆脱这个问题

于 2020-07-15T08:00:35.180 回答
0

traefik:latest昨天拉后我也遇到了类似的问题。刚刚注意到图像今天更新了,新的拉动解决了我的问题。

于 2020-07-14T08:51:08.553 回答