обратный прокси traefik 2.2 https не показывает мой контейнер - PullRequest
0 голосов
/ 09 марта 2020

Я устанавливаю тестовую среду с traefik v2.2 в docker. Я настроил docker сеть с именем traefik, с тестовым веб-контейнером. Я могу видеть свою панель инструментов, если я перехожу к https://test.com, однако я не вижу свой контейнер, когда я перехожу к путям в соответствии с настройками по правилам (то есть https://test.com/myapp)

На панели инструментов все выглядит нормально в состоянии, показывается внутренний ip контейнера myapp, маршрутизаторы и точка входа https в порядке.

Если I go до https://test.com/myapp это дает настроенную страницу 404 "Объяснение кода ошибки: 404 = Ничто не соответствует данному URI." Если я go до https://test.com/somenonexistantpath, это дает мне обычное сообщение 404 не найдено

Я пытался изменить правила хоста. Я добавил traefik. docker .network = traefik к меткам контейнера, если они не были в той же сети, что и контейнер traefik, и подтвердил, что могу достичь http://myapp: 80 изнутри контейнера traefik , Правило хоста выглядит корректно в соответствии с документацией traefik v2, поэтому мне интересно, если я что-то упустил.

Я выполнил тестирование, переместив правило хоста test.com в myapp, и он смог добраться до тестового сайта, поэтому мне кажется, что я что-то упускаю с путями

Ниже мой docker -compose file, файл конфигурации dynamici c -traefik.yaml содержит только информацию tls

version: '3.3'

networks:
  traefik:
    external: true



services:
  traefik:
    image: traefik:v2.2 #latest pull as of Feb 25, 2020
    container_name: traefik
    restart: always
    networks:
      - traefik
    ports:
      - "443:443"
    volumes:
      - ${PWD}/traefik:/traefik # Traefik static config
      - /var/run/docker.sock:/var/run/docker.sock:ro # SSL Development certificates
    command:
      - "--log.level=DEBUG"
      #- "--accesslog=true"
      - "--api=true"
      - "--api.dashboard=true"
      - "--api.debug=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=traefik"
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
      - "--providers.docker.watch=true"
      - "--entrypoints.https.address=:443"
         # apparently you still neeed an extra file to specify TLS
      - "--providers.file.filename=/traefik/dynamic-traefik.yaml"
    labels:
      - "traefik.enable=true"
      # Traefik Dashboard
      - "traefik.http.routers.traefik.rule=Host(`test.com`)" #works but only gives you dashboard
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.routers.traefik.entrypoints=https"
      - "traefik.http.routers.traefik.tls=true"
      - "traefik.docker.network=traefik"




  myapp:
    image: yeasy/simple-web:latest
    container_name: myapp
    restart: always
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.myapp.entrypoints=https"
      - "traefik.http.routers.myapp.rule=Host(`test.com`) && PathPrefix(`/myapp`)"
      - "traefik.http.routers.myapp.service=myapp"
      - "traefik.http.routers.myapp.tls=true"
      - "traefik.http.services.myapp.loadbalancer.server.port=80" #this is needed to point to the correct port on the service container
      - "treafik.docker.network=traefik"
...