dockerネットワークと/etc/resolv.confに問題があります。

dockerネットワークと/etc/resolv.confに問題があります。

最初の状況:

次のdocker-composeファイルがあります

version: '3.4'

services:
  api:
    image: ${DOCKER_REGISTRY}project.api
    ports:
      - "5080:5080"
      - "5081:5081"
    build:
      context: .
      dockerfile: src/Api/Dockerfile.Debug
    environment:
      - ASPNETCORE_URLS=http://+:5080;http://+:5081;http://+:5443
      - ASPNETCORE_HTTP_PORT=5080
      - MANAGEMENT_HTTP_PORT=5081
      - ASPNETCORE_ENVIRONMENT=Local

これにより、docker-compose upコンテナは、コンテナで実行されているAPIにトークンを提供する必要がある特定のエンドポイントにアクセスできなくなります。したがって、タイムアウトエラーが発生します。

2番目のケース: ただし、次のファイルを使用すると正常に動作します。

version: '3.4'

services:
  api:
    image: ${DOCKER_REGISTRY}project.api
    build:
      context: .
      dockerfile: src/Api/Dockerfile.Debug
    environment:
      - ASPNETCORE_URLS=http://+:5080;http://+:5081;http://+:5443
      - ASPNETCORE_HTTP_PORT=5080
      - MANAGEMENT_HTTP_PORT=5081
      - ASPNETCORE_ENVIRONMENT=Local
    network_mode: host

私のホストでは、VPNが実行されているときにのみトークンエンドポイントにアクセスできることに注意する必要があります。

/etc/resolv.conf/どちらの場合も(使用して)コンテナの内容を表示しますdocker exec -it "container_id" bash

最初の状況:(作業していない状況)

search XXX.biz YYY.biz
nameserver 127.0.0.11
options ndots:0

2番目の状況:(作業状況)

search XXX.biz  YYY.biz
nameserver 10.10.***.***
nameserver 10.11.***.***
nameserver 8.8.8.8

不足しているエントリネームサーバー10.10を追加してみました。 ネームサーバー10.11。 ネームサーバー 8.8.8.8

次のようにdaemon.json:

{
    "dns": [ "10.10.***.***", "10.11.***.***", "8.8.8.8" ],
    "dns-search": [ "XXX.biz", "YYY.biz" ]
}

ただし、最初のケースの問題は解決されず、/etc/resolve.conf/コンテナ内のファイルエントリはまだ表示されません。

最初の出来事を解決する方法のアイデアはありますか?

PS:私はDebian 10マシンを持っています。

以下をすべて試しましたが、何も機能しません。

1を試してください:また、docker-composeファイルにエントリを追加しようとしましたが、うまくいきませdnsんでした。

2回試してください:これはまたdocker-composenetwor_mode : brdigeとにエントリを追加します/etc/resolv.confが、アプリケーションはまだトークンを取得できません。

3回試してみてください:./resolv.conf ファイルに期待されるコンテンツが含まれている手動インストール。

volumes:
- ./resolv.conf:/etc/resolv.conf 

また、にアイテムが追加されますが、/etc/resolv.confアプリはまだトークンをインポートできません。

エラーは次のとおりです。

An error has occurred in Timed KeyCloak Authentificated Service
api_1  |       System.Net.Http.HttpRequestException: Resource temporarily unavailable (oauth2.XXX.com:443)

この問題は、トークン プロバイダへのアクセスだけでなく、インターネットへの一般的なアクセスに関連しているようです。実際、コンテナ内で次のスクリプトを実行すると、「オフライン」が返されます。

echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1

if [ $? -eq 0 ]; then
    echo "Online"
else
    echo "Offline"
fi
Offline

関連情報