user2058413
user2058413

Reputation: 815

Docker build fails with "error NU1301: Unable to load the service index for source" when trying to access azure artifacts

Note that I am trying to build this locally with docker desktop and not in Azure CI/CD pipeline.

I have started this process using https://github.com/microsoft/artifacts-credprovider which also didn't work and later found out new dotnet restore can do it's job. So, below method was tried after referring to https://github.com/microsoft/artifacts-credprovider/issues/220

Below are the steps I tried.

I have a PAT already generated.

Below is my docker file.

WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyProj.csproj", "."]

COPY . .
WORKDIR "/src/."

ARG PAT
ARG FEED_URL

ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
RUN dotnet nuget add source "${FEED_URL}" -u "noneed" -p "${PAT}" --store-password-in-clear-    text --valid-authentication-types basic

RUN dotnet restore "./MyProj.csproj"

RUN dotnet build "MyProj.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProj.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProj.dll"]

Then I run docker build as below

docker build . --build-arg FEED_URL=https://pkgs.dev.azure.com/[mycompanydata]/nuget/v3/index.json --build-arg PAT=secret

In the output I can see dotnet nuget add source gets properly build by replacing the parameters. But after some time the error shows

error NU1301: Unable to load the service index for source [my artifact feed url]

Then I tried with a nuget.config file as well as mentioned in https://blog.devops.dev/consuming-private-nuget-feeds-from-a-dockerfile-in-a-secure-and-devops-friendly-manner-b5c90ea90bba?gi=70f359a1d550 Here the only changes was to add the nuget.config file such as;

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
        <add key="opentrips" value="azure-artifact-feed-url"/>
      </packageSources>
    <packageSourceCredentials>
        <openTrips>
        <add key="Username" value="noneed" />
        <add key="ClearTextPassword" value="my-pat" />
        </openTrips>
      </packageSourceCredentials>
</configuration>

Then changed the restore step as;

RUN dotnet restore "./OpenTrips.Services.UserProfile.csproj" --configfile nuget.config --ignore-failed-sources

Then ran the docker build . And this time the same issue but instead of error code NU1301 it shows NU1801. Then tried Nuget connection attempt failed "Unable to load the service index for source" where it says to remove the nuget.config in %appData% same NU1801 error.

Then in some other sources they mentioned to make sure TLS 1.2 is enabled in Edge and it is. Then added dns to Docker Desktop config file like; "dns": [ "8.8.8.8","1.1.1.1" ],

Apart from above I have tried few other things which has worked to some people randomly. Basically without nuget.config I get NU1301 and with nuget.config NU1801. I am completely lost.

Upvotes: 10

Views: 6101

Answers (0)

Related Questions