是否可以将子文件夹路由到不同的容器?
例如,http://localhost/wordpress
会加载 Wordpress http://localhost/drupal
,也会加载 Drupal。
我知道我可以使用子域名。但在这里,这是针对测试环境的,每次创建子域名可能都是浪费时间
编辑:docker-compose.yml
第一个答案之后
version: '3'
services:
reverse-proxy:
image: traefik:2.0
command: --api.insecure=true --providers.docker
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
wordpress:
image: wordpress
labels:
- "traefik.http.routers.whoami.rule=Host(`localhost`) && Path(`/wordpress`)"
drupal:
image: drupal
labels:
- "traefik.http.routers.whoami.rule=Host(`localhost`) && Path(`/drupal`)"
答案1
查看您根据@Zoredache 的回答更新后发布的配置,您就快完成了。
为了让一切正常,你唯一需要改变的是姓名路由器。
您已经获得了traefik.http.routers.whoami.rule
两个服务的标签名称,因此 Traefik 只是使用覆盖最后出现的服务的路由。
您应该为每个标签指定唯一的名称,以使它们不会重叠。
例如:
version: '3'
services:
reverse-proxy:
image: traefik:2.0
command: --api.insecure=true --providers.docker
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
wordpress:
image: wordpress
labels:
- "traefik.http.routers.wordpress.rule=Host(`localhost`) && Path(`/wordpress`)"
drupal:
image: drupal
labels:
- "traefik.http.routers.drupal.rule=Host(`localhost`) && Path(`/drupal`)"
请注意,现在每条规则都是根据其想要服务的服务来命名的(wordpress
,和drupal
)。
答案2
是的
假设你使用的是 2.0,你需要设置你的规则以包含小路路由器下的组件。
来自文档的示例。
rule = "(Host(`containo.us`) && Path(`/traefik`))"
1.7 文档中也提到这是在前端完成的。