2017-05-28 1 views
1

J'essaie d'utiliser Traefik pour déployer plusieurs applications proxy dans mon cluster en mode Docker Swarm.Définir la règle de l'hôte et du chemin d'accès pour Traefik

Je l'ai fait afin qu'il prédit un hôte nommé mais je veux qu'il proxy sur un hôte et un chemin nommé, mais je ne peux pas travailler sur les étiquettes que j'ai besoin d'utiliser.

C'est le je commande docker service utilise:

docker service create --network traefik-net --label "traefik.port=9000" --label "traefik.docker.network =traefik-net" --label "traefik.frontend.rule=Host:`hostname -f`" --label="traefik.backend=portainer " --constraint "node.role == manager" -p 9000:9000 --mount "type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock" 
--name portainer portainer/portainer 

Si l'hôte est dummy.localhost alors je suis en mesure de frapper l'application portainer sur http://dummy.localhost. Cependant, je veux le modifier de sorte que je dois utiliser http://dummy.localhost/portainer.

J'ai vu qu'il y a des façons de le faire en utilisant un fichier toml pour Traefik, mais j'utilise le mode montre et les étiquettes sur les services de docker que je déploie.

Comment puis-je combiner plusieurs règles frontales dans mes étiquettes afin que cette application (et toute autre) puisse être utilisée par proxy sur un nom d'hôte et un chemin?

Répondre

3

Si vous souhaitez appliquer plusieurs règles pour qu'une décision de routage prenne effet, séparez-les par un point-virgule. Par exemple:

Host: <your host rule>; PathPrefixStrip: /portainer 

Ce que les moyens ci-dessus est: Si le match préfixe hôte et le chemin, Traefik acheminera demandes au back-end associé (s) (et dépouiller le préfixe de chemin d'accès spécifié avant expédition). Cela fonctionne même lorsqu'il est défini à l'intérieur d'une étiquette. Pour plus de détails, voir the frontend documentation pour plus de détails.

+0

Parfait merci beaucoup. J'utilisais un ',' au lieu d'un ';' pour configurer plusieurs règles –