web-dev-qa-db-fra.com

Définir l'hôte et la règle de frontend de chemin pour Traefik

J'essaie d'utiliser Traefik pour déployer plusieurs applications proxy dans mon cluster en mode Docker Swarm.

Je l'ai pour qu'il procède à un hôte nommé mais je veux qu'il procède à un proxy sur un hôte et un chemin nommés, mais je ne peux pas déterminer les étiquettes que je dois utiliser.

C'est le docker service commande que j'utilise:

 docker service create \
                       \
    --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 peux accéder à l'application de portage sur http://dummy.localhost. Cependant je veux le modifier pour que je doive utiliser http://dummy.localhost/portainer.

J'ai vu qu'il existe des moyens de le faire lors de l'utilisation d'un fichier toml pour Traefik, mais j'utilise le mode de surveillance et les étiquettes sur les services 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 mandatée sur un nom d'hôte et un chemin?

10
Russell Seymour

Si vous souhaitez que plusieurs règles s'appliquent afin qu'une décision de routage devienne effective, séparez-les par un point-virgule. Par exemple:

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

Ce que cela signifie: si l'hôte et le préfixe de chemin correspondent, Traefik acheminera les demandes vers le (s) backend (s) associé (s) et supprimera le préfixe de chemin spécifié avant le transfert). Cela fonctionne même lorsqu'il est défini à l'intérieur d'une étiquette.

Voir la documentation frontend pour plus de détails.

14
Timo Reimann