Я пытаюсь создать следующую конфигурацию traefik docker-compose
:
- маршрут на основе первого элемента пути, который должен соответствовать docker имени изображения.
- удалить изображение имя при запуске службы:
Вот что у меня получилось:
version: "3.3"
services:
traefik:
image: "traefik:v2.2"
container_name: "traefik"
command:
#- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.defaultRule=PathPrefix(`/{{ (split \"-\" .Name)._0 }}`)"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
whoami:
image: "containous/whoami"
labels:
- "traefik.http.routers.gsn.middlewares=pfx"
- "traefik.http.middlewares.pfx.replacepathregex.regex=^/\\w+/"
- "traefik.http.middlewares.pfx.replacepathregex.replacement=/"
с этой конфигурацией, выполнив команду:
curl http://localhost/whoami/something
Найдет docker изображение whoami
, удалит его из пути, и, таким образом, сам контейнер получит ожидаемый URL-запрос:
GET=/something
Однако я хочу добиться того же БЕЗ необходимости писать метки для каждого контейнера docker отдельно.
Сложность заключается в том, что маршрутизация должна основываться на префиксе исходного пути, но на перенаправленном пути должно быть после удаления префикса ...
Можно ли сделать с Traefik?