Traefik: Конфигурация с docker не работает - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь настроить пример приложения с обратным прокси Traefik в Docker.

Я использую Traefik v2.2 для этого проекта, который существенно отличается от Traefik .v1.0.

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

version: '3'

services:
  traefik:
    # The official v2 Traefik docker image
    image: traefik:v2.2
    # Enables the web UI and tells Traefik to listen to docker
    command:
      - --api.insecure=true
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
    ports:
      # The HTTP port
      - "89:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8089:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
  whoami:
    # A container that exposes an API to show its IP address
    image: containous/whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"
      - "traefik.http.routers.whoami.entrypoints=web"

Я могу получить доступ к панели управления Traefik, когда я go на localhost:8089 в моем веб-браузере, но я не могу доступ к приложению whoami, когда я ввожу адрес whoami.localhost в своем веб-браузере. Мне просто интересно, нужно ли что-то изменить, прежде чем я смогу получить к нему доступ, или мне нужно изменить хост с whoami.localhost на localhost:3000, поскольку это порт, в котором я хочу получить доступ к приложению.

Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

1 голос
/ 27 мая 2020

Одна проблема, которую я заметил, заключается в том, что вы открыли порт контейнера 80 контейнера traefik для порта хоста 89. Если вы наберете whoami.localhost в своем веб-браузере, ваш браузер будет искать приложение на порте хоста 80 по этому адресу (поскольку localhost изначально отображается на порт 80), но он не будет найти там что-нибудь, потому что это можно найти только в порту 89. Насколько я понимаю, вы должны иметь доступ к приложению через командную строку с помощью команды curl -H Host:whoami.localhost http://127.0.0.1:89. К сожалению, я не уверен, как URL whoami.localhost:89 обрабатывается вашим браузером, соответственно, вашим DNS.

Вы можете изменить файл docker-compose.yml следующим образом:

version: "3"

services:
  traefik:
    # The official v2 Traefik docker image
    image: traefik:v2.2
    # Enables the web UI and tells Traefik to listen to docker
    command:
      - --api.insecure=true
      - --providers.docker=true
    ports:
      # The HTTP port
      - "89:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8089:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock
  whoami:
    # A container that exposes an API to show its IP address
    image: containous/whoami
    labels:
      - traefik.http.routers.whoami.rule=Host(`whoami.localhost`)

А затем вы можете получить доступ к приложению на своем командном терминале, набрав:

curl -H Host:whoami.localhost http://127.0.0.1:89

Примечание : whoami.localhost может быть whoami.docker.localhost или app.localhost или как вам угодно. Дело в том, что вы должны localhost присоединить к концу, за исключением случаев, когда вы добавляете полное доменное имя (FQDN).

Вот и все.

Я надеюсь это помогает

...