序文
私の Rails アプリはホスト名を気にします。たとえば、リクエストが から送信された場合と、 からリクエストが送信されたdomain-a.dev
場合では動作が異なりdomain-b.dev
ます。この動作をテストしたいので、完全な*.dev
TLD を127.0.0.1
ローカル マシンにルーティングしたので、テストでサーバーのドメインを希望どおりに設定できますが、常にローカル マシンのテスト サーバーが使用されます。
私のテストselenium
では、外部ブラウザを起動してdomain-a.dev
またはを参照するため、これが必要domain-b.dev
です。request.hostname
したがって、外部ブラウザーには影響しないため、テストで単純に上書き (またはそのように) することはできません。
テストに docker イメージを使用したいので、複数のサーバーでテスト環境を構成する必要はなく、docker イメージを起動するだけです。これまでのところすべてが機能していますが、*.dev
解決しています。
私の知る限り、DockerはデフォルトでホストネームサーバーまたはGoogleネームサーバーを使用します(https://docs.docker.com/articles/networking/#dns)が、それはホストのDNSを変更して目的を達成することを意味しますが、これは望ましくありません。
docker ホストに触れずに、特別な TLDdev
が常に にルーティングされる docker イメージを構築したいと考えています。127.0.0.1
これは、たとえば、この docker イメージを実行しているすべての人にとって、コンテナー内domain.dev
に解決されることを意味します。127.0.0.1
(だけでなくdomain.dev
、すべての*.dev
ドメイン)。他の TLD は通常どおり機能するはずです。
私が持っているアイデアはdnsmasq
、コンテナ内で開始し、残りを解決*.dev
して通常のネームサーバーに転送するように構成することです。127.0.0.1
しかし、私は docker を初めて使用するので、これが複雑すぎるのか、それともどのように達成できるのかわかりません。
/etc/hosts
もう 1 つのアイデアは、特別なドメインの固定エントリでコンテナーを上書きすることです。しかし、これは、新しいドメインを に解決したい場合に備えて docker コンテナーを更新する必要があることを意味します127.0.0.1
。これは、ドメインが頻繁に変更される場合の欠点です。
ドッカーの専門家は何と言っていますか?