Traefik路径路由器

时间:2020-08-02 15:39:00

标签: docker-compose routes middleware traefik

我正在尝试创建以下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完成吗?

0 个答案:

没有答案