Маршрут к flask и vue контейнерам с трафиком - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь приспособить этот для использования traefik v2, но у меня ничего не получается. Все службы могут общаться друг с другом и работают, но я не могу заставить работать маршруты для dev env. Я не понимаю, почему.

docker -compose.dev.command.yml:

version: '3.3'
services:
  proxy:
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
      - "--providers.docker.swarmMode=false"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.traefik.address=:8080"

  # backend:
  #   command: bash -c "while true; do sleep 1; done"  # Infinite loop to keep container live doing nothing

  backend:
    command: /start-reload.sh

docker -compose.dev.labels.yml:

version: '3.3'
services:
  proxy:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`localhost`)"
      - "traefik.http.routers.traefik.rule=PathPrefix(`/dashboard/`)"
      - "traefik.http.routers.traefik.entrypoints=traefik"

  backend:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.backend.entrypoints=web"
      - "traefik.http.routers.backend.rule=Host(`localhost`) && PathPrefix(`/redoc`) || PathPrefix(`/api`) || PathPrefix(`/docs`)"

  frontend:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.frontend.entrypoints=web"
      - "traefik.http.routers.frontend.rule=Host(`localhost`) && PathPrefix(`/`)"

docker -compose.dev.networks.yml:

version: '3.3'
services:
  backend:
    networks:
      default:
        aliases:
          - ${DOMAIN}

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

Что я делать неправильно?

1 Ответ

0 голосов
/ 24 марта 2020

вам не хватает метки сервиса для ваших определений, вам нужны как минимум следующие метки на ваших внутренних сервисах

        - traefik.enable=true
        - traefik.http.routers.backend.entrypoints=web
        - traefik.http.services.backend.loadbalancer.server.port=${rplace with service port}
        - traefik.http.routers.backend.rule=Host(`localhost`) && PathPrefix(`/redoc`) || PathPrefix(`/api`) || PathPrefix(`/docs`)
        - traefik.http.routers.backend.service=backend
        - traefik.docker.network=traefik

то же самое для сброса сервисов, вы можете прочитать больше об этом здесь

...