最初の状況:
次の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