Docker: "npm not found" - c#

I'm trying to containerize an ASP.NET Core & Angular app but I'm having some trouble.
I'm getting these errors:
=> [internal] load build definition from Dockerfile 0.4s
=> => transferring dockerfile: 872B 0.1s
=> [internal] load .dockerignore 0.4s
=> => transferring context: 35B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/sdk:5.0 0.5s
=> [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:5.0 0.0s
=> [base 1/7] FROM mcr.microsoft.com/dotnet/aspnet:5.0 0.0s
=> [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:5.0#sha256:b69acf0a0734d77827d4e7ce22421256a64d490bb3ce988b21c4 0.0s
=> [internal] load build context 0.3s
=> => transferring context: 3.17kB 0.0s
=> CACHED [base 2/7] WORKDIR /app 0.0s
=> CACHED [base 3/7] RUN apt-get -y update 0.0s
=> CANCELED [base 4/7] RUN apt-get -y upgrade 5.6s
=> CACHED [build 2/7] WORKDIR /src 0.0s
=> CACHED [build 3/7] COPY [mediere.csproj, .] 0.0s
=> CACHED [build 4/7] RUN dotnet restore "./mediere.csproj" 0.0s
=> CACHED [build 5/7] COPY . . 0.0s
=> CACHED [build 6/7] WORKDIR /src/. 0.0s
=> CACHED [build 7/7] RUN dotnet build "mediere.csproj" -c Release -o /app/build 0.0s
=> ERROR [publish 1/1] RUN dotnet publish "mediere.csproj" -c Release -o /app/publish 4.7s
------
> [publish 1/1] RUN dotnet publish "mediere.csproj" -c Release -o /app/publish:
#21 1.567 Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET
#21 1.567 Copyright (C) Microsoft Corporation. All rights reserved.
#21 1.567
#21 2.460 Determining projects to restore...
#21 2.852 All projects are up-to-date for restore.
#21 3.883 mediere -> /src/bin/Release/net5.0/mediere.dll
#21 3.894 mediere -> /src/bin/Release/net5.0/mediere.Views.dll
#21 4.006 /bin/sh: 2: /tmp/tmp045a9cb1e4954d54b304a781ae210094.exec.cmd: npm: not found
#21 4.011 /src/mediere.csproj(38,5): error MSB3073: The command "npm install" exited with code 127.
------
executor failed running [/bin/sh -c dotnet publish "mediere.csproj" -c Release -o /app/publish]: exit code: 1
My dockerfile is this:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 5000
#EXPOSE 5001
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt install -y curl
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs build-essential
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["mediere.csproj", "."]
RUN dotnet restore "./mediere.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "mediere.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "mediere.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "mediere.dll"]
I expected it to work, because I'm installing npm on line 12.
What I have observed is that the publish task and the apt-get install tasks work in the same time, and I think that publish goes before apt-get install and that's why it doesn't work. I might be wrong though.
How can I fix this error?
Thanks.

Each of the Dockerfile build stages starts FROM some other image. At the point you're using Node, that build stage is
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
...
FROM build AS publish
RUN dotnet publish "mediere.csproj" -c Release -o /app/publish
In this particular sequence of packages, starting from the .NET SDK image up through the point you run dotnet publish, but this never actually installs Node.
Where you do install Node it's in a base image stage. That's included into the final image, but not in any of the intermediate build steps.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
RUN apt-get install -y nodejs
FROM base AS final
If you're building the Angular application into static files and then serving it from the .NET application, you only need Node during the build-and-publish phase, but not in the final application. I'd suggest installing it immediately after the FROM ... AS build line, and in particular before you COPY anything into the image. This will avoid reinstalling Node if you rebuild the image due to a code change.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
# do not install Node here
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
# Do install Node
# The default version in the Debian repositories should be fine
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends --assume-yes \
build-essential \
nodejs
# Build your application as before
WORKDIR /src
...
FROM build AS publish
# Will include Node, because the `FROM ... AS build` stage installed it
FROM base AS final
# Will not include Node, because the `FROM ... AS base` stage did not
# install it

Related

Docker skip project on build

I have dockerfile with this config
FROM mcr.microsoft.com/dotnet/sdk:6.0 as builder
WORKDIR /app
COPY . .
RUN apt-get update;apt-get install curl; apt-get -y install zip
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install
ENV PATH="${PATH}:/root/.dotnet/tools"
#RUN dotnet tool install -g AWS.CodeArtifact.NuGet.CredentialProvider
#
#RUN dotnet codeartifact-creds install
#
#RUN aws codeartifact login --tool dotnet --domain monspire --domain-owner 986853728599 --repository monspire
RUN dotnet restore
RUN dotnet publish -c Release TooSee.Web.Host.csproj
# create the runnable container...
FROM mcr.microsoft.com/dotnet/sdk:6.0
# install dependencies
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
libc6-dev \
libgdiplus \
libx11-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=builder /app/src/TooSee.Web.Host/bin/Debug/net6.0/publish/ .
ARG ENVIRONMENT
ENV ENVIRONMENT=${ENVIRONMENT}
EXPOSE 80
CMD ["dotnet", "TooSee.Web.Host.dll"]
And try to run it via docker build -t tooseeapi .
But for reasons it skipped .Core project
Here is log
=> ERROR [builder 9/9] RUN dotnet publish -c Release TooSee.Web.Host.csproj 6.9s
[builder 9/9] RUN dotnet publish -c Release TooSee.Web.Host.csproj:
#15 0.750 Microsoft (R) Build Engine version 17.2.0+41abc5629 for .NET
#15 0.750 Copyright (C) Microsoft Corporation. All rights reserved.
#15 0.750
#15 2.054 Determining projects to restore...
#15 2.057 Skipping project "/TooSee.Web.Core/TooSee.Web.Core.csproj" because it was not found.
#15 2.060 Skipping project "/TooSee.Web.Core/TooSee.Web.Core.csproj" because it was not found.
#15 2.385 All projects are up-to-date for restore.
#15 3.150 /usr/share/dotnet/sdk/6.0.302/Microsoft.Common.CurrentVersion.targets(2066,5): warning : The referenced project '../TooSee.Web.Core/TooSee.Web.Core.csproj' does not exist. [/app/TooSee.Web.Host.csproj]
Dockerfile is under this path - C:\Users\nemes\Documents\GitHub\tooseeapi\src\TooSee.Web.Host
And .Core is here
C:\Users\nemes\Documents\GitHub\tooseeapi\src\TooSee.Web.Core
But if I run dotnet publish -c Release TooSee.Web.Host.csproj I got no errors
Why it's skipped and how I can fix this?
you have to keep your docker file at this location
C:\Users\nemes\Documents\GitHub\tooseeapi\src
and copy both project files separately. something like
COPY ["TooSee.Web.Host/TooSee.Web.Host.csproj", "./"]
COPY ["TooSee.Web.Core/TooSee.Web.Core.csproj", "./"]

ASP.Net Core & Docker - Project file does not exist

I have this Dockerfile
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 5000
RUN apt-get -qq update && apt-get -qqy --no-install-recommends install wget gnupg \
git \
unzip
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs
WORKDIR /app
#EXPOSE 5001
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["mediere.csproj", "."]
RUN dotnet restore "./mediere.csproj"
COPY . .
WORKDIR "/src/."
RUN apt-get -qq update && apt-get -qqy --no-install-recommends install wget gnupg \
git \
unzip
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs
#RUN npm install zone.js#0.11.3 --save
WORKDIR /app
RUN dotnet build "mediere.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "mediere.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "mediere.dll"]
and running docker-compose up throws me this error:
=> ERROR [build 11/11] RUN dotnet build "mediere.csproj" -c Release -o /app/build 2.5s
------
> [build 11/11] RUN dotnet build "mediere.csproj" -c Release -o /app/build:
#23 2.241 Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET
#23 2.241 Copyright (C) Microsoft Corporation. All rights reserved.
#23 2.241
#23 2.245 MSBUILD : error MSB1009: Project file does not exist.
#23 2.245 Switch: mediere.csproj
------
executor failed running [/bin/sh -c dotnet build "mediere.csproj" -c Release -o /app/build]: exit code: 1
ERROR: Service 'web' failed to build : Build failed
and I don't see why.
I'm using a default ASP.Net core & Angular template from VS 2019 and I'm trying to dockerize it.
Here's the folder structure:
why am I getting this error?
Am I missing something obvious?
It's because you're setting the current working directory to /app right before building the project:
WORKDIR /app
The project doesn't exist in that directory. There should be no need to have that line at all because the working directory before this instruction gets executed is the correct one.

Error in dotnet restore in executing a docker build in project .net 6 use layers

I'm trying executing a "docker build" in my application .Net 6.0, but I receive an error in Dotnet restore in Dockerfile.
The application executing normally local, not any error.
Docker command:
docker build -t aspnetcore-docker-image .
Error in terminal:
=> ERROR [build 7/9] RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj 0.2s
------
> [build 7/9] RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj:
#11 0.185 Could not execute because the application was not found or a compatible .NET SDK is not installed.
#11 0.185 Possible reasons for this include:
#11 0.185 * You intended to execute a .NET program:
#11 0.185 The application 'restore' does not exist.
#11 0.185 * You intended to execute a .NET SDK command:
#11 0.185 It was not possible to find any installed .NET SDKs.
#11 0.185 Install a .NET SDK from:
#11 0.185 https://aka.ms/dotnet-download
------
executor failed running [/bin/sh -c dotnet restore ./DevFreela.API/DevFreela.API.csproj]: exit code: 145
My Dockerfile
# .NET Core SDK
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS build
# Sets the working directory
WORKDIR /app
# Copy Projects
#COPY *.sln .
COPY Src/DevFreela.API/DevFreela.API.csproj ./DevFreela.API/
COPY Src/DevFreela.Application/DevFreela.Application.csproj ./DevFreela.Application/
COPY Src/DevFreela.Core/DevFreela.Core.csproj ./DevFreela.Core/
COPY Src/DevFreela.Infrastructure/DevFreela.Infrastructure.csproj ./DevFreela.Infrastructure/
# .NET Core Restore
RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj
# Copy All Files
COPY Src ./
# .NET Core Build and Publish
RUN dotnet publish ./DevFreela.Api/DevFreela.Api.csproj -c Release -o /publish
# ASP.NET Core Runtime
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY --from=build /publish ./
EXPOSE 80 5195 7066
ENV ASPNETCORE_URLS=http://+:5195;https://+:7066
ENTRYPOINT ["dotnet", "DevFreela.API.dll"]
Project structure:
Complete terminal log:
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 938B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 35B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0 0.6s
=> [internal] load build context 0.0s
=> => transferring context: 13.14kB 0.0s
=> [runtime 1/3] FROM mcr.microsoft.com/dotnet/aspnet:6.0#sha256:26ef9dc4aa354cc4aa4ae533c97f92d0d72c5e848f6968660be51d9 0.0s
=> CACHED [runtime 2/3] WORKDIR /app 0.0s
=> CACHED [build 3/9] COPY Src/DevFreela.API/DevFreela.API.csproj ./DevFreela.API/ 0.0s
=> CACHED [build 4/9] COPY Src/DevFreela.Application/DevFreela.Application.csproj ./DevFreela.Application/ 0.0s
=> CACHED [build 5/9] COPY Src/DevFreela.Core/DevFreela.Core.csproj ./DevFreela.Core/ 0.0s
=> CACHED [build 6/9] COPY Src/DevFreela.Infrastructure/DevFreela.Infrastructure.csproj ./DevFreela.Infrastructure/ 0.0s
=> ERROR [build 7/9] RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj 0.2s
------
> [build 7/9] RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj:
#11 0.185 Could not execute because the application was not found or a compatible .NET SDK is not installed.
#11 0.185 Possible reasons for this include:
#11 0.185 * You intended to execute a .NET program:
#11 0.185 The application 'restore' does not exist.
#11 0.185 * You intended to execute a .NET SDK command:
#11 0.185 It was not possible to find any installed .NET SDKs.
#11 0.185 Install a .NET SDK from:
#11 0.185 https://aka.ms/dotnet-download
------
executor failed running [/bin/sh -c dotnet restore ./DevFreela.API/DevFreela.API.csproj]: exit code: 145
You're using the aspnet image which doesn't contain the SDK, so you can't build using that. You need the sdk image for the first part of your Dockerfile like this
# .NET Core SDK
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# Sets the working directory
WORKDIR /app
# Copy Projects
#COPY *.sln .
COPY Src/DevFreela.API/DevFreela.API.csproj ./DevFreela.API/
COPY Src/DevFreela.Application/DevFreela.Application.csproj ./DevFreela.Application/
COPY Src/DevFreela.Core/DevFreela.Core.csproj ./DevFreela.Core/
COPY Src/DevFreela.Infrastructure/DevFreela.Infrastructure.csproj ./DevFreela.Infrastructure/
# .NET Core Restore
RUN dotnet restore ./DevFreela.API/DevFreela.API.csproj
# Copy All Files
COPY Src ./
# .NET Core Build and Publish
RUN dotnet publish ./DevFreela.Api/DevFreela.Api.csproj -c Release -o /publish
# ASP.NET Core Runtime
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY --from=build /publish ./
EXPOSE 80 5195 7066
ENV ASPNETCORE_URLS=http://+:5195;https://+:7066
ENTRYPOINT ["dotnet", "DevFreela.API.dll"]

Buiding a Docker image with a external project reference (outside solution)

I'm having trouble building a Docker Image of my project. In my project I have a project reference from an application, which is not in the same solution as my project. When I try to build my Docker image I get the following errors/warnings:
PS C:\Trunk\Tools\Dashboard> docker build -f Server/Dockerfile --force-rm -t dashboardserver .
[+] Building 228.2s (15/17)
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 579B 0.1s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 35B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0 0.9s
=> [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0 0.0s
=> [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0 0.0s
=> [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:6.0#sha256:a2a8f968b043349b8faa0625c5405ac33da70b3274ff9e17109430f16aa9a3ee 0.0s
=> [internal] load build context 2.2s
=> => transferring context: 1.32MB 2.2s
=> CACHED [base 2/2] WORKDIR /app 0.0s
=> CACHED [final 1/2] WORKDIR /app 0.0s
=> CACHED [build 2/7] WORKDIR /src 0.0s
=> CACHED [build 3/7] COPY [Server/Server.csproj, Server/] 0.0s
=> [build 4/7] RUN dotnet restore "Server/Server.csproj" 94.6s
=> [build 5/7] COPY . . 0.2s
=> [build 6/7] WORKDIR /src/Server 0.2s
=> ERROR [build 7/7] RUN dotnet build "Server.csproj" -c Release -o /app/build 102.3s
------
> [build 7/7] RUN dotnet build "Server.csproj" -c Release -o /app/build:
#15 3.459 Microsoft (R) Build Engine version 17.1.0+ae57d105c for .NET
#15 3.459 Copyright (C) Microsoft Corporation. All rights reserved.
#15 3.459
#15 4.336 Determining projects to restore...
#15 4.341 Skipping project "/SomeApp/Api/SomeApp.Api.csproj" because it was not found.
#15 4.343 Skipping project "/SomeApp/Api/SomeApp.Api.csproj" because it was not found.
#15 4.729 All projects are up-to-date for restore.
#15 5.139 /usr/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(2065,5): warning : The referenced project '../../../SomeApp/Api/SomeApp.Api.csproj' does not exist. [/src/Server/Server.csproj]
#15 97.00 /src/Server/Program.cs(9,7): error CS0246: The type or namespace name 'SomeApp' could not be found (are you missing a using directive or an assembly reference?) [/src/Server/Server.csproj]
#15 98.57
#15 98.57 Build FAILED.
#15 98.57
#15 98.57 /usr/share/dotnet/sdk/6.0.201/Microsoft.Common.CurrentVersion.targets(2065,5): warning : The referenced project '../../../SomeApp/Api/SomeApp.Api.csproj' does not exist. [/src/Server/Server.csproj]
#15 98.57 /src/Server/Program.cs(9,7): error CS0246: The type or namespace name 'SomeApp' could not be found (are you missing a using directive or an assembly reference?) [/src/Server/Server.csproj]
#15 98.57 1 Warning(s)
#15 98.57 1 Error(s)
#15 98.57
#15 98.57 Time Elapsed 00:01:35.02
------
executor failed running [/bin/sh -c dotnet build "Server.csproj" -c Release -o /app/build]: exit code: 1
The Dockerfile which is used:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Server/Server.csproj", "Server/"]
RUN dotnet restore "Server/Server.csproj"
COPY . .
WORKDIR "/src/Server"
RUN dotnet build "Server.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Server.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Server.dll"]
EXPOSE 5004
The directory looks as follows:
\Trunk\Tools\Dashboard (my application with its own solution)
\Trunk\SomeApp (other application with its own solution)
+- SomeApp.sln
+- Api ("project" folder)
+- SomeApp.Api.csproj
Project reference in dashboard.sln:
<ItemGroup>
<ProjectReference Include="..\..\..\SomeApp\Api\SomeApp.Api.csproj" />
</ItemGroup>
I tried to build a Docker image of my application, and I expected to get a Docker image, so I could build a Docker container. I totally get that it can't find the 'SomeApp' application, because I'm not pushing it to the Docker image. But how could I solve this problem?
(Edit: removed unreadable JPG and added cmd lines. Also added Dockerfile, which is used at the moment. For the minimal reproducible example there are two project solutions needed, with the same file structure as shown above. )

Why does my dotnet restore step fail in my dockerfile?

I've generated a basic Kubernetes Web Application in Visual Studio 2019, v16.11.1, which allowed me to automatically generate a Dockerfile and start debugging. However, upon switching to a Release configuration, the build fails when the internal dotnet restore command executes. Apparently upon trying to pull Nuget packages from a feed, the dotnet restore rejects the SSL certificate provided by the Nuget feed server.
My question is, what am I doing wrong? I started with literally the default web application program generated by Visual Studio, and it automatically fails when I try to build a Release config. See here for more detail:
The Issue
The following Dockerfile can be built in a debug configuration, but not in a Release configuration.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["KubernetesWebApp/KubernetesWebApp.csproj", "KubernetesWebApp/"]
RUN dotnet restore "KubernetesWebApp/KubernetesWebApp.csproj"
COPY . .
WORKDIR "/src/KubernetesWebApp"
RUN dotnet build "KubernetesWebApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "KubernetesWebApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "KubernetesWebApp.dll"]
Clicking "Debug" to start a debug session executes the following build, and I can debug the application:
docker build -f ".\KubernetesWebApp\Dockerfile" --force-rm -t kuberneteswebapp:dev --target base --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=KubernetesWebApp" .
However, upon attempting the following build command, the dotnet restore command fails due to a remote SSL certificate check failure:
docker build -t kuberneteswebapp:latest -f KubernetesWebApp/Dockerfile .
This elicits the following error:
[+] Building 7.7s (12/17)
=> [internal] load build definition from Dockerfile 0.4s
=> => transferring dockerfile: 32B 0.2s
=> [internal] load .dockerignore 0.3s
=> => transferring context: 35B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/core/aspnet:3.1 0.8s
=> [internal] load metadata for mcr.microsoft.com/dotnet/core/sdk:3.1 0.8s
=> [internal] load build context 0.3s
=> => transferring context: 644B 0.1s
=> [build 1/7] FROM mcr.microsoft.com/dotnet/core/sdk:3.1#sha256:aa984bf37de864afe9f34bc80e42412dd95702b94731a481821eeae364df77ae 0.2s
=> => resolve mcr.microsoft.com/dotnet/core/sdk:3.1#sha256:aa984bf37de864afe9f34bc80e42412dd95702b94731a481821eeae364df77ae 0.2s
=> [base 1/2] FROM mcr.microsoft.com/dotnet/core/aspnet:3.1#sha256:9280563285e34929fdae56b8759d8050169b3ce125a5dced64945b3b51e79918 0.3s
=> => resolve mcr.microsoft.com/dotnet/core/aspnet:3.1#sha256:9280563285e34929fdae56b8759d8050169b3ce125a5dced64945b3b51e79918 0.3s
=> CACHED [base 2/2] WORKDIR /app 0.0s
=> CACHED [final 1/2] WORKDIR /app 0.0s
=> CACHED [build 2/7] WORKDIR /src 0.0s
=> CACHED [build 3/7] COPY [KubernetesWebApp/KubernetesWebApp.csproj, KubernetesWebApp/] 0.0s
=> ERROR [build 4/7] RUN dotnet restore "KubernetesWebApp/KubernetesWebApp.csproj" 5.5s
------
> [build 4/7] RUN dotnet restore "KubernetesWebApp/KubernetesWebApp.csproj":
#12 3.363 Determining projects to restore...
#12 5.397 /usr/share/dotnet/sdk/3.1.412/NuGet.targets(128,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/src/KubernetesWebApp/KubernetesWebApp.csproj]
#12 5.397 /usr/share/dotnet/sdk/3.1.412/NuGet.targets(128,5): error : The SSL connection could not be established, see inner exception. [/src/KubernetesWebApp/KubernetesWebApp.csproj]
#12 5.397 /usr/share/dotnet/sdk/3.1.412/NuGet.targets(128,5): error : The remote certificate is invalid according to the validation procedure. [/src/KubernetesWebApp/KubernetesWebApp.csproj]
------
executor failed running [/bin/sh -c dotnet restore "KubernetesWebApp/KubernetesWebApp.csproj"]: exit code: 1
What I Think the Problem Is
I think the issue arises when :
The docker container attempts to pull Nuget packages from a nuget feed,
During identity verification it checks the provided server certificate
Due to some specified validation procedure, the server certificate fails verification.
What I've Tried to Fix It
I've tried the following commands to force the application to download new base container images, but to no avail:
Attempt 1:
docker build --no-cache --pull -t kuberneteswebapp:latest -f KubernetesWebApp/Dockerfile .
Result: Same error as before
Attempt 2:
docker system prune
docker image prune -a
docker build --no-cache --pull -t kuberneteswebapp:latest -f KubernetesWebApp/Dockerfile .
result: Same error as before
Neither of these efforts have succeeded. Can anyone help me? I'm at a loss here.
The issue fixed itself. I just reattempted both my test and actual projects and it works now. This could have been a software update or a computer restart. But everything works now.
If you are using Windows containers, I recommend switching to a Linux container and trying it out again. (You can do so by right clicking the Docker desktop icon in the system tray bar).
I came across the following issue on GitHub: https://github.com/docker/for-win/issues/2760#issuecomment-430889666 I was unable to reproduce your issue with a fresh ASP .NET Web API

Categories

Resources