Одна проблема, которую я заметил, заключается в том, что вы открыли порт контейнера 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).
Вот и все.
Я надеюсь это помогает