web-dev-qa-db-ja.com

Docker Composeを使用したOpenRestyは、Luaブロック内の自身の名前(hostname.domainname)を解決できません

OpenRestyサーバーを含むDockerイメージがあります。私は次のようなdocker-composeファイル内で実行しています:

version: '2.1'

services:
  dev.example.com:
    # etc.

OpenResty構成でDockerを使用するようにresolverを設定すると、dev.example.comを参照でき、正しいIPに解決されます。

http {
  resolver 127.0.0.11;
}

ただし、サービスにdev.example.comという名前を付けず、代わりにdocker-composeでhostnamedomainnameを使用したいと思います。

version: '2.1'

services:
  proxy:
    domainname: example.com
    hostname: dev
    # etc.

これにより、環境変数を使用してホスト名を制御できるようになります。問題は、サービス名の代わりにこれらのパラメーターを使用すると、pingcurlなどの基本的なテストを行っても、Luaブロック内でdev.example.comを解決できなくなることです。実行中のコンテナ内から正しく解決され、このような単純なブロックはどちらの場合でも機能します。

location /test {
  proxy_pass https://dev.example.com/static.html
}

OpenRestyと互換性のある方法で、サービス名を変更せずにドメイン/ホスト名を動的に構成するにはどうすればよいですか?

1
Tom Fenech

domainnamehostnameを変更する代わりに、container_nameを指定できます。

version: '2.1'

services:
  proxy:
    container_name: dev.example.com
    # etc.

コンテナー名を設定する効果の1つは、DockerDNSがdev.example.comをコンテナーに解決することです。

0
Tom Fenech