Traefikを使用して、Docker Swarmモードのクラスターに複数のプロキシアプリケーションをデプロイしようとしています。
名前付きホストをプロキシするように取得しましたが、名前付きホストとパスでプロキシしたいのですが、使用する必要があるラベルを計算できません。
これは私が使用しているdocker service
コマンドです。
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
ホストがdummy.localhost
の場合、http://dummy.localhost
で移植アプリをヒットできます。ただし、http://dummy.localhost/portainer
を使用する必要があるように変更します。
Traefikのtomlファイルを使用する場合にこれを行う方法があることを確認しましたが、展開しているDockerサービスで監視モードとラベルを使用しています。
ラベルに複数のフロントエンドルールを組み合わせて、この(およびその他の)アプリケーションをホスト名とパスでプロキシできるようにするにはどうすればよいですか?
ルーティングの決定を有効にするために複数のルールを適用する場合は、セミコロンで区切ります。例えば:
Host: <your Host rule>; PathPrefixStrip: /portainer
上記の意味:ホストとパスのプレフィックスが一致する場合、Traefikはリクエストを関連するバックエンドにルーティングします(転送の前に指定されたパスのプレフィックスを取り除きます)。これは、ラベル内で定義されている場合でも機能します。
詳細は フロントエンドのドキュメント を参照してください。