Наконец-то все заработало. Документы traefik прямо в области c находятся по определенным темам, и, учитывая недавний крупный выпуск 2.0, примеров пока не так много.
Вот мой рабочий docker -композит. yml-файл, в котором приложение теперь отображается с использованием одного хоста "whomai.localhost" и на обоих портах 8000 (http) и 8443 (https).
version: "3.7"
services:
whoami:
image: containous/whoami
labels:
- traefik.enable=true
- traefik.http.routers.whoami-http.rule=Host(`whoami.localhost`)
- traefik.http.routers.whoami-http.entrypoints=web
- traefik.http.routers.whoami-http.service=whoami-http-service
- traefik.http.services.whoami-http-service.loadbalancer.server.port=80
- traefik.http.routers.whoami-https.rule=Host(`whoami.localhost`)
- traefik.http.routers.whoami-https.entrypoints=web-secure
- traefik.http.routers.whoami-https.service=whoami-https-service
- traefik.http.services.whoami-https-service.loadbalancer.server.port=80
- traefik.http.routers.whoami-https.tls=true
reverse-proxy:
depends_on:
- whoami
image: traefik:v2.1.1
ports:
- 8000:80
- 8443:443
- 8001:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik:/etc/traefik:ro
Маршрутизаторы и службы в trafik 2 .x может быть создан динамически, используя любое соглашение об именах, которое вы хотите, используя docker метки. В этой настройке я просто назвал их whoami-http
и whoami-https
для маршрутизаторов и whoami-http-service
и whoami-https-service
для сервисов. Поскольку я динамически создаю свои собственные маршрутизаторы / службы вместо использования значений по умолчанию, балансировщику нагрузки для каждой службы необходимо явно указать порт сервера для целевого приложения. Поскольку приложение whoami предоставляет только сам порт 80, а TLS завершается на traefik, это определяется как порт 80 для служб http и https.
Все указанные выше метки являются обязательными и не могут быть опущены для этого типа настраиваемый маршрутизатор / настройка службы.
Я использую mkcert на Windows 10 для действительных локальных сертификатов на случай, если вы задавались вопросом.
mkcert -install
mkcert -key-file traefik\certs\localhost-key.pem -cert-file traefik\certs\localhost-cert.pem whoami.localhost localhost 127.0.0.1 ::1