カテゴリー
技術 未分類

Docker+Traefikで同一ホストのサブフォルダとルートフォルダで別バックエンドを見に行かせる

Traefik をリバースプロキシにしてアクセスをバックエンドの Docker コンテナに振り分ける実験をしていたのですが、http://example.com/app1 と http://example.com/app […]

Traefik をリバースプロキシにしてアクセスをバックエンドの Docker コンテナに振り分ける実験をしていたのですが、http://example.com/app1 と http://example.com/app2 をコンテナ app1 と app2 に振り分けることは無事できたものの、http://example.com/ へのアクセスがどちらにもいかず404になってしまいました。

docker-compose.yml の label で Traefik の動作指定をしていたのですが、どちらかの app に / を含めてしまうと、/ を書いた方の定義が優先されてしまい、もう一方のサブフォルダが振り分けされなくなってしまいました。

では、/ を含む方の定義に2つの条件を書けばいいのでは、と思いましたが、一行の中にセミコロンで複数条件を書くのは、それらの AND を表していて、OR にはなりません。それでは、と、二つの条件を2行に並べて書くと、後で書いた方だけが有効になるよう。

公式の github project を検索すると、ラベルにサービス名をつけることで複数の条件を OR で指定できるようです。

Allow multiple rules from docker labels containers with traefik.<servicename>.* properties by benoitf · Pull Request #1257 · containous/traefik

この修正が今年の3月で、version 1.3.0 に入っている。ということは使えるということ。