Обратный прокси-сервер с Traefik для нескольких docker контейнеров с пользовательским интерфейсом Swagger и MinIO выдает ошибку не найден - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь запустить пример с traefik, который установит sh обратный прокси-сервер, в котором есть swagger ui и контейнеры MinIO docker. Я хочу, чтобы эти две службы были доступны на localhost:70/swagger и localhost:70/minio.

Это мой docker-compose.yml файл:

version: '3'

services:
  reverse-proxy:
    image: traefik:v2.2
    container_name: traefik-reverse-proxy
    command: --providers.docker --api.insecure=true --entrypoints.web.address=:80 --log.level=DEBUG
    ports:
      - "70:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  swagger:
    image: swaggerapi/swagger-ui:v3.23.0
    container_name: swagger
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.swagger.rule=Host(`localhost`) && Path(`/swagger`)"
      - "traefik.http.routers.swagger.entrypoints=web"
      - "traefik.http.routers.swagger.service=swagger"
      - "traefik.http.services.swagger.loadbalancer.server.port=8080"
  minio:
    image: minio/minio:RELEASE.2019-12-24T23-04-45Z
    container_name: minio
    command: "server /data"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.minio.rule=Host(`localhost`) && Path(`/minio`)"
      - "traefik.http.routers.minio.entrypoints=web"
      - "traefik.http.routers.minio.service=minio"
      - "traefik.http.services.minio.loadbalancer.server.port=9000"
  whoami:
    image: "containous/whoami"
    container_name: whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`localhost`) && Path(`/whoami`)"
      - "traefik.http.routers.whoami.entrypoints=web"
      - "traefik.http.routers.whoami.service=whoami"
      - "traefik.http.services.whoami.loadbalancer.server.port=80"

После того, как я запустил это с docker-compose up, все начинается хорошо. Я также включил сервис whoami только для тестирования, и он работает нормально, когда я перехожу на localhost: 70 / whoami, так как я могу видеть информацию о моем хосте. Однако я не могу назвать localhost: 70 / minio или localhost: 70 / swagger. Если я попытаюсь вызвать swagger, он вернет nginx 404 Not Found и сообщение журнала контейнера traefik, подобное этому:

traefik-reverse-proxy | time="2020-05-05T11:15:37Z" level=debug msg="vulcand/oxy/roundrobin/rr: Forwarding this request to URL" Request="{\"Method\":\"GET\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/swagger\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/1.1\",\"ProtoMajor\":1,\"ProtoMinor\":1,\"Header\":{\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\"],\"Accept-Encoding\":[\"gzip, deflate\"],\"Accept-Language\":[\"en-GB,en;q=0.5\"],\"Connection\":[\"keep-alive\"],\"Upgrade-Insecure-Requests\":[\"1\"],\"User-Agent\":[\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0\"],\"X-Forwarded-Host\":[\"localhost:70\"],\"X-Forwarded-Port\":[\"70\"],\"X-Forwarded-Proto\":[\"http\"],\"X-Forwarded-Server\":[\"26cf421ccde8\"],\"X-Real-Ip\":[\"172.19.0.1\"]},\"ContentLength\":0,\"TransferEncoding\":null,\"Host\":\"localhost:70\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"172.19.0.1:50548\",\"RequestURI\":\"/swagger\",\"TLS\":null}" ForwardURL="http://172.19.0.5:8080"
swagger          | 2020/05/05 11:15:37 [error] 26#26: *2 open() "/usr/share/nginx/html/swagger" failed (2: No such file or directory), client: 172.19.0.4, server: localhost, request: "GET /swagger HTTP/1.1", host: "localhost:70"
swagger          | 172.19.0.4 - - [05/May/2020:11:15:37 +0000] "GET /swagger HTTP/1.1" 404 126 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0"

Кажется, проблема с маршрутизацией, потому что если я перейду на IP-адрес сервера swagger, я Я могу увидеть petstore spe c.

Итак, как я могу решить эту проблему? Я что-то упустил?

...