首页 > 解决方案 > 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

我在这里不知所措。任何帮助将不胜感激。

我尝试过的 Traefik 标签:

到目前为止,我收到或发现的唯一建议是关于使用旧标签或新标签,这就是我发现的

image: traefik:v2.2
image: traefik:v2.2.1
image: traefik:v2.2.5
image: traefik:latest

标签: docker-composehttp-status-code-404traefikintermittent

解决方案


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


推荐阅读