我正在尝试创建以下traefik docker-compose
配置:
这是到目前为止我得到的:
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完成吗?