Hello i am trying to dockerize
a ASP NET Core 2.1
application and the docker build
fails when it executes dotnet restore
.
I have already checked other threads for this specific problem
Nuget connection attempt failed "Unable to load the service index for source".
The solutions provided there did not help me.
Dockerfile
ARG serverPath=./Core/Server
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
COPY ./Core/Server/*.csproj ./
RUN dotnet restore //fails here
COPY ./Core/Server/ ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet","Server.dll"]
Output of docker build
$ docker build -t server .
Sending build context to Docker daemon 11.13MB
Step 1/11 : ARG serverPath=./Core/Server
Step 2/11 : FROM microsoft/dotnet:sdk AS build-env
---> 343e2dc38168
Step 3/11 : WORKDIR /app
---> Using cache
---> e9b75480ecb9
Step 4/11 : COPY ./Core/Server/*.csproj ./
---> Using cache
---> 2de864bedf6a
Step 5/11 : RUN dotnet restore
---> Running in 2fc6963e7e2c
Restoring packages for /app/Server.csproj...
/usr/share/dotnet/sdk/2.2.100/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/app/Server.csproj]
/usr/share/dotnet/sdk/2.2.100/NuGet.targets(114,5): error : The SSL connection could not be established, see inner exception. [/app/Server.csproj]
/usr/share/dotnet/sdk/2.2.100/NuGet.targets(114,5): error : Authentication failed because the remote party has closed the transport stream. [/app/Server.csproj]
The command '/bin/sh -c dotnet restore -p:RestoreUseSkipNonexistentTargets=false -nowarn:msb3202,nu1503' returned a non-zero code: 1
Try this
docker network ls
This should list the networkIDs try running the docker build
docker build --network=<networkid> tag=<tag>
try the above with all the network listed it will work with one, that's the host network.
Try updating your DNS Server to be Fixed (default should be 8.8.8.8
).
I found this in Settings-> Network -> DNS Server
I was seeing this same error while trying to build a docker image within WSL2 (Ubuntu 20.04) running on my Windows machine.
In my case, I confirmed that I could hit nuget from my WSL2 with:
curl -v https://api.nuget.org/v3/index.json
But then if I tried that same request from a Docker container, it could not resolve the hostname (this would just hang):
docker run -it --rm curlimages/curl -v -k https://api.nuget.org/v3/index.json
So this pointed to an issue with DNS and since Docker uses your "host" DNS config, I focused on my WSL2 DNS. I was using the default DNS that WSL2 uses. This means /etc/resolv.conf
is auto-generated... I turned that off following the instructions here: https://superuser.com/questions/1533291/how-do-i-change-the-dns-settings-for-wsl2
The DNS I then manually configured in /etc/resolv.conf
was my company's internal DNS server. After restarting WSL2 and Docker, I was able to resolve api.nuget.org in Docker containers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With