我不想在traefik后面运行应用程序,而不是作为子域运行,而是像xyz.abc.com/m1或xyz.abc.com/m2等。 哪个标签适合它。我已尝试使用PathPrefix,但无法正常工作。示例应用程序Joomla部署在docker swarm模式下。我可以同时使用Nginx或Haproxy吗?如果是这样,如何?
答案 0 :(得分:0)
将多个应用程序放在同一个名称后面时,应用程序很有可能需要知道其URL前缀不在根目录(因为大多数应用程序都希望在根目录部署)。因此,可能也需要研究一下。
在Traefik方面,堆栈文件可能看起来像这样。这是在Swarm模式下运行的(因为您提到了Swarm),这要求Traefik标签在服务上,而不在容器上。因此,它们必须在deploy.labels
定义之内,而不仅仅是labels
。
version: "3.7"
services:
proxy:
image: traefik:1.7
command: --docker --docker.swarmMode
ports:
- 80:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
app1:
image: your-image-for-app1
deploy:
labels:
traefik.backend: app1
traefik.frontend.rule: PathPrefix:/m1
traefik.port: 80
app2:
image: your-image-for-app2
deploy:
labels:
traefik.backend: app2
traefik.frontend.rule: PathPrefix:/m2
traefik.port: 80
version: "3.7"
services:
proxy:
image: traefik:2.0
command: --providers.docker --providers.docker.swarmMode
ports:
- 80:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
app1:
image: your-image-for-app1
deploy:
labels:
traefik.http.routers.app1.rule: PathPrefix(`/m1`)
traefik.http.services.app1.loadbalancer.server.port: 80
app2:
image: your-image-for-app2
deploy:
labels:
traefik.http.routers.app2.rule: PathPrefix(`/m2`)
traefik.http.services.app2.loadbalancer.server.port: 80