第一种情况:
我有以下 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 提供令牌的端点。所以我遇到了超时错误。
第二种情况: 但是,使用以下文件可以正常工作。
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
第二种情况:(工作情况)
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:我还尝试dns
在 docker-compose 文件中添加条目,但它也不起作用。
尝试2:在 docker-compose 和networ_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)
该问题似乎与一般访问互联网有关,而不仅仅是访问令牌提供商。事实上,在容器内执行以下脚本会返回“Offline”
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