0

序文

私の Rails アプリはホスト名を気にします。たとえば、リクエストが から送信された場合と、 からリクエストが送信されたdomain-a.dev場合では動作が異なりdomain-b.devます。この動作をテストしたいので、完全な*.devTLD を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。これは、ドメインが頻繁に変更される場合の欠点です。

ドッカーの専門家は何と言っていますか?

4

2 に答える 2

-1

私は基本的にhttp://xip.io/を使用してこれを回避しました

のような URL をsub.127.0.0.1.xip.io使用して、ローカル マシンに接続できます。私のアプリは、それ127.0.0.1.xip.ioが「トップ レベル ドメイン」として扱われ、subtld のないドメイン名であることを知るだけで済みます。(Ruby on Rails アプリではconfig.action_dispatch.tld_length = 6、たとえば調整することでこれを行うことができます)。

于 2016-02-07T16:12:03.040 に答える