Код: Выделить всё
String? ip = Request.HttpContext.Connection.RemoteIpAddress?.ToString();
if (String.IsNullOrEmpty(ip))
{
throw new ArgumentNullException("No Ip found.");
}
String hostname = Dns.GetHostEntry(ip).HostName;
if (String.IsNullOrEmpty(hostname))
{
return ip;
}
return hostname;
< /code>
Этот код работал очень хорошо, пока я запустил его в Visual Studio. < /p>
Теперь я хочу развернуть мой API в контейнер Docker, и эта функция возвращает следующее исключение: < /p>
nelectiffdffcefcefcepless nemerfffefffeffffeffeffote>
nelectiffmfceffeffeffceffec Известный < /p>
at system.net.dns.gethostentryordresscore (адрес iPaddress, Boolean JustAddresses, Addressfamily Addressfamily, Nullable`1 StartmentTamp)
at system.net.dns.gethostentry (string hostnamestam Выше] < /p>
< /blockquote>
Может быть, примечательно, что DNS - это DNS Company, и я пытаюсь получить имена хостов для внутренних IPS. Запустите команду и изменили настроек Docker Daemon DNS следующим образом: < /p>
docker run -t -d -p 50000:8080 -p 50001:8081 -e ASPNETCORE_ENVIRONMENT=Development --dns=[dns_ip] --name testcontainer [my_image]:latest
< /code>
daemon.json{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"dns-opts": [
"ndots:15"
],
"experimental": false
}
< /code>
And my Dockerfile is pretty much the stock file you get when Visual Studio creates one for you:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Debug
WORKDIR /src
COPY ["MyProj/MyProj.csproj", "MyProj/"]
COPY ["MyLib/MyLib.csproj", "MyLib/"]
RUN dotnet restore "./MyProj/MyProj.csproj"
COPY . .
WORKDIR "/src/MyProj"
RUN dotnet build "./MyProj.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Debug
RUN dotnet publish "./MyProj.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProj.dll"]
< /code>
(I use debug as the Container will assist in some tests)
My image is created by running
dotnet publish -t:PublishContainer
< /code>
I have also tried using Docker Desktops exec to resolve a hostname from within the container but the shell doesn't know the commands I was able to find so far.
I am quite new to Docker so I am already out of Ideas and would really appreciate some help.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -container