Базовая аутентификация не работает в моем втором файле docker-compose для моего веб-приложения

#docker-compose #basic-authentication #traefik #traefik-authentication

#docker-compose #базовая аутентификация #traefik #traefik-аутентификация

Вопрос:

Итак, у меня есть 2 конфигурации, первая конфигурация docker-compose настраивает traefik, и у нее правильно настроено и работает базовое промежуточное ПО аутентификации

Но во-вторых, я правильно настроил базовую аутентификацию, и веб-сайт работает очень хорошо на https, и все, кроме базовой аутентификации, не работает

Ниже приведен файл docker-compose для моего веб-сайта

 version: '3.7'

networks:
  traefik-proxy:
    external: true
  internal:
    external: false

services:

  web:
    container_name: web
    build: .
    image: ibl-docs
    command: yarn run serve --build --port ${PORT} --host 0.0.0.0
    volumes:
      - .:/code
      - '/code/node_modules'
    environment:
      - CHOKIDAR_USEPOLLING=true
    expose:
      - ${PORT}
    networks:
      - traefik-proxy
      - internal
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik-proxy"
      ## HTTP
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}.entrypoints=web"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}.rule=Host(`${HOST}`)"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}.service=${TRAEFIK_MANAGER_ID}-secure"
      - "traefik.http.services.${TRAEFIK_MANAGER_ID}.loadbalancer.server.port=${PORT}"

      # Redirect
      - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}.middlewares=https-redirect"

      ## HTTPS
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-secure.entrypoints=websecure"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-secure.rule=Host(`${HOST}`)"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-secure.tls=${HTTPS_ROUTER_TLS_MODE}"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-secure.tls.certresolver=default"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-secure.service=${TRAEFIK_MANAGER_ID}-secure"
      - "traefik.http.services.${TRAEFIK_MANAGER_ID}-secure.loadbalancer.server.port=${PORT}"

      ## Admin
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.rule=Host(`${HOST}`) amp;amp; PathPrefix(`/admin`)"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.entrypoints=websecure"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.middlewares=${TRAEFIK_MANAGER_ID}-auth"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.tls=${HTTPS_ROUTER_TLS_MODE}"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.tls.certresolver=default"
      - "traefik.http.routers.${TRAEFIK_MANAGER_ID}-admin.service=${TRAEFIK_MANAGER_ID}-admin"
      - "traefik.http.services.${TRAEFIK_MANAGER_ID}-admin.loadbalancer.server.port=${PORT}"

      - "traefik.http.middlewares.${TRAEFIK_MANAGER_ID}-auth.basicauth.users=${BASIC_AUTH_USERS}"

 

переменная BASIC_AUTH_USERS установлена в файле .env как имя пользователя: sdksjdlakjsdlaslkda,
а учетные данные генерируются из .httpaccess

Журналы docker-compose для traefik вообще не указывают на ошибку, и я попытался использовать учетные данные в файле docker-compose моего веб-сайта без переменной среды и экранирования $ twice, как предлагали многие, но http auth просто не отображается.

На данный момент любая помощь и предложения будут высоко оценены, спасибо.

Ответ №1:

Для меня это работает следующим образом:

docker-compose.yml

 labels:
  [...]
  - "traefik.http.middlewares.auth.basicauth.users=${TRAEFIK_USER}:${TRAEFIK_PASSWORD}"
  [...]
 

.env

 [...]
TRAEFIK_USER=username
TRAEFIK_PASSWORD='$2y$05$xahM2aRLsfQtudl1rimk5OZom7ekdizT911qCAk92tPvathYlZ8B7'
[...]
 

Поэтому замена одного $ из хэша не требуется при замене переменной.