Я запускаю кучу сервисов за обратным прокси 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