Траэфик прерывистый 404 на docker - составить - PullRequest
0 голосов
/ 13 июля 2020

Я запускаю кучу сервисов за обратным прокси traefik. Я испытал эти службы до смерти, и они отлично работают. Проблема в том, что когда задействован traefik, я получаю периодические ошибки 404 всякий раз, когда я с ними взаимодействую.

Одна из этих служб предоставляет красивый и простой REST api. Потребляющий код должен повторить все запросы. Это управляемо.

Одна из этих служб предоставляет интерфейс: если я хочу использовать интерфейс, мне нужно постоянно обновлять sh страницу. Это поистине потрясающий пользовательский опыт.

Вот несколько примеров из моего файла набора:

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

  • Как вы можете видеть, оба они используют basi c auth. удаление аутентификации не имеет никакого эффекта
  • удаление проверки работоспособности веб-сервера не имеет никакого эффекта
  • при выполнении вызовов api к api_service, первый вызов часто терпит неудачу, второй вызов всегда завершается успешно
  • при доступе к интерфейсу воздушного потока: первая страница загружается неуспешно, после этого все происходит успешно.
  • есть кнопка на фронтенде воздушного потока, которая запускает POST. POST возвращает 302 Found, затем перенаправление всегда дает мне сначала 404
  • иногда веб-интерфейс загружает, но ресурсы stati c, на которые он полагается, не загружаются, что приводит к уродливому и непригодному для использования сайт. Так что я часто обновляю страницу

Я здесь в растерянности. Любая помощь будет очень благодарна.

Теги Traefik, которые я пробовал:

Грех, единственный совет, который я получил или нашел до сих пор, касается использования старых или новых тегов, вот что я найдено

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

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Оказалось, это ошибка на v2.2.2. См. здесь для получения дополнительной информации. Используйте, например, v2.2.5, чтобы избавиться от этой проблемы

0 голосов
/ 14 июля 2020

У меня возникли похожие проблемы после того, как вчера вытянули traefik:latest. Только что заметил, что изображение было обновлено сегодня, и новая версия исправила мои проблемы.

...