Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.4k views
in Technique[技术] by (71.8m points)

docker - dotnet core aspnet 2.2 image works on windows containers but not linux

I have a project built using .net 2.2. Here is the dockerfile from one of the services:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS publish
WORKDIR /src
COPY Identity.Api.csproj .
RUN dotnet restore MyApp.Api.csproj
COPY . .
RUN dotnet publish "MyApp.Api.csproj" -c Release -o /app

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

For my colleagues, they can pull this project and docker build using this dockerfile when running Docker Desktop using Linux Containers. But for me, for some weird reason, when I try to docker build, I get the following error

Step 8/14 : RUN dotnet restore MyApp.Api.csproj
 ---> Running in 99df436556bb
/usr/share/dotnet/sdk/2.2.207/NuGet.targets(119,5): error : An error occurred while retrieving package metadata for 'System.Memory.4.5.1' from source '/usr/share/dotnet/sdk/NuGetFallbackFolder'. [/src/MyApp.Api.csproj]
/usr/share/dotnet/sdk/2.2.207/NuGet.targets(119,5): error :   Root element is missing. [/src/MyApp.Api.csproj]
The command '/bin/sh -c dotnet restore MyApp.Api.csproj' returned a non-zero code: 1

Here is my dotnet --info

PS C:UsersAKhanSourceReposavm4srcServicesIdentityIdentity.Api> dotnet --info
.NET SDK (reflecting any global.json):
 Version:   5.0.102
 Commit:    71365b4d42

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19042
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:Program Filesdotnetsdk5.0.102

Host (useful for support):
  Version: 5.0.2
  Commit:  cb5f173b96

.NET SDKs installed:
  2.1.400 [C:Program Filesdotnetsdk]
  2.1.520 [C:Program Filesdotnetsdk]
  2.2.107 [C:Program Filesdotnetsdk]
  5.0.101 [C:Program Filesdotnetsdk]
  5.0.102 [C:Program Filesdotnetsdk]

.NET runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.24 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.5 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.24 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.5 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.11 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.1 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.2 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.2 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.NETCore.App 2.1.24 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.NETCore.App 2.2.5 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.NETCore.App 3.1.11 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.NETCore.App 5.0.1 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.NETCore.App 5.0.2 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.11 [C:Program FilesdotnetsharedMicrosoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.1 [C:Program FilesdotnetsharedMicrosoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.2 [C:Program FilesdotnetsharedMicrosoft.WindowsDesktop.App]

However, if I switch to Windows Containers, I can get this project to docker build.

I can't figure out what is unique about my environment.

I have Docker Container running WSL2.

PS c:> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

Any help appreciated.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...