Docker+Traefikで同一ホストのサブフォルダとルートフォルダで別バックエンドを見に行かせる
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 で指定できるようです。
この修正が今年の3月で、version 1.3.0 に入っている。ということは使えるということ。