简体   繁体   中英

Docker container unable to find .NET framework

I have recently upgraded a .NET project from the 2.0 framework to 2.1. As described in the guidelines, I have replaced the Microsoft.AspNetCore.All with Microsoft.AspNetCore.App. Since the 2.1.0 version contains a lot of vulnerabilities, I am explicitly specifying the version of the package as 2.1.23 (latest for 2.1 according to NuGet).

The building of the project works fine as well as building the docker image. However, when I try to run the docker container, I get the following error:

cord-notifier                 | It was not possible to find any compatible framework version
cord-notifier                 | The specified framework 'Microsoft.AspNetCore.App', version '2.1.23' was not found.
cord-notifier                 |   - Check application dependencies and target a framework version installed at:
cord-notifier                 |       /usr/share/dotnet/
cord-notifier                 |   - Installing .NET Core prerequisites might help resolve this problem:
cord-notifier                 |       https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
cord-notifier                 |   - The .NET Core framework and SDK can be installed from:
cord-notifier                 |       https://aka.ms/dotnet-download
cord-notifier                 |   - The following versions are installed:
cord-notifier                 |       2.1.20 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
cord-notifier exited with code 150

The docker base image that I am using is FROM mcr.microsoft.com/dotnet/core/sdk:2.2 I have tried switching to 2.1 as well but that does not do the trick either. I don't use the aspcore one because that does not have the SDK tools installed (such as dotnet).

I tried listing the SDKs and runtime images on my machine and I can see that everything is installed there.

Microsoft.AspNetCore.All 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.22 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.8 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

And the SDKs

2.1.300 [/usr/local/share/dotnet/sdk]
2.1.403 [/usr/local/share/dotnet/sdk]
2.1.701 [/usr/local/share/dotnet/sdk]
2.1.811 [/usr/local/share/dotnet/sdk]
2.2.207 [/usr/local/share/dotnet/sdk]
3.0.100 [/usr/local/share/dotnet/sdk]
3.1.101 [/usr/local/share/dotnet/sdk]
3.1.102 [/usr/local/share/dotnet/sdk]
3.1.402 [/usr/local/share/dotnet/sdk]
5.0.101 [/usr/local/share/dotnet/sdk]

I am running out of ideas on how to solve this. Thank you in advance!

Edit: Added the dockerfile

I use this docker file for the image itself. But for local dev, we have a different setup.

FROM dotnet-core-sdk-2.2-debug:latest AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY CordNotifier/cordfinance.webapi.utils.2.2.101.nupkg /Packages
COPY CordNotifier/cordfinance.webapi.utils.2.2.101.nupkg.sha512 /Packages
COPY CordNotifier/cordfinance.webapi.utils.nuspec /Packages
COPY CordNotifier/CordNotifier.csproj CordNotifier/
COPY CordNotifierDataModel/CordNotifierDataModel.csproj CordNotifierDataModel/
COPY Shared/Shared.csproj Shared/

 RUN dotnet restore CordNotifier/CordNotifier.csproj
#RUN dotnet list CordNotifier/CordNotifier.csproj package

# Copy everything else and build
COPY ./ ./
RUN dotnet publish CordNotifier/CordNotifier.csproj -c Debug -o out --no-restore

# Build runtime image
FROM dotnet-core-aspnet-2.1-debug:latest
WORKDIR /app

COPY --from=build-env /app/CordNotifier/out .

ENTRYPOINT ["dotnet", "CordNotifier.dll"]

where dotnet-core-sdk-2.2-debug:latest comes from

FROM mcr.microsoft.com/dotnet/core/sdk:2.1

ENV ASPNETCORE_ENVIRONMENT=Development

# Global NuGet Configuration
COPY Packages/NuGet.config /root/.nuget/NuGet/NuGet.Config


# Populate Nuget Package Cache
COPY Packages Packages
RUN dotnet restore Packages/Packages.csproj; exit 0

I have recently upgraded a .NET project from the 2.0 framework to 2.1. As described in the guidelines, I have replaced the Microsoft.AspNetCore.All with Microsoft.AspNetCore.App. Since the 2.1.0 version contains a lot of vulnerabilities, I am explicitly specifying the version of the package as 2.1.23 (latest for 2.1 according to NuGet).

The building of the project works fine as well as building the docker image. However, when I try to run the docker container, I get the following error:

cord-notifier                 | It was not possible to find any compatible framework version
cord-notifier                 | The specified framework 'Microsoft.AspNetCore.App', version '2.1.23' was not found.
cord-notifier                 |   - Check application dependencies and target a framework version installed at:
cord-notifier                 |       /usr/share/dotnet/
cord-notifier                 |   - Installing .NET Core prerequisites might help resolve this problem:
cord-notifier                 |       https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
cord-notifier                 |   - The .NET Core framework and SDK can be installed from:
cord-notifier                 |       https://aka.ms/dotnet-download
cord-notifier                 |   - The following versions are installed:
cord-notifier                 |       2.1.20 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
cord-notifier exited with code 150

The docker base image that I am using is FROM mcr.microsoft.com/dotnet/core/sdk:2.2 I have tried switching to 2.1 as well but that does not do the trick either. I don't use the aspcore one because that does not have the SDK tools installed (such as dotnet).

I tried listing the SDKs and runtime images on my machine and I can see that everything is installed there.

Microsoft.AspNetCore.All 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.8 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.22 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.23 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.8 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.8 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

And the SDKs

2.1.300 [/usr/local/share/dotnet/sdk]
2.1.403 [/usr/local/share/dotnet/sdk]
2.1.701 [/usr/local/share/dotnet/sdk]
2.1.811 [/usr/local/share/dotnet/sdk]
2.2.207 [/usr/local/share/dotnet/sdk]
3.0.100 [/usr/local/share/dotnet/sdk]
3.1.101 [/usr/local/share/dotnet/sdk]
3.1.102 [/usr/local/share/dotnet/sdk]
3.1.402 [/usr/local/share/dotnet/sdk]
5.0.101 [/usr/local/share/dotnet/sdk]

I am running out of ideas on how to solve this. Thank you in advance!

Edit: Added the dockerfile

I use this docker file for the image itself. But for local dev, we have a different setup.

FROM dotnet-core-sdk-2.2-debug:latest AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY CordNotifier/cordfinance.webapi.utils.2.2.101.nupkg /Packages
COPY CordNotifier/cordfinance.webapi.utils.2.2.101.nupkg.sha512 /Packages
COPY CordNotifier/cordfinance.webapi.utils.nuspec /Packages
COPY CordNotifier/CordNotifier.csproj CordNotifier/
COPY CordNotifierDataModel/CordNotifierDataModel.csproj CordNotifierDataModel/
COPY Shared/Shared.csproj Shared/

 RUN dotnet restore CordNotifier/CordNotifier.csproj
#RUN dotnet list CordNotifier/CordNotifier.csproj package

# Copy everything else and build
COPY ./ ./
RUN dotnet publish CordNotifier/CordNotifier.csproj -c Debug -o out --no-restore

# Build runtime image
FROM dotnet-core-aspnet-2.1-debug:latest
WORKDIR /app

COPY --from=build-env /app/CordNotifier/out .

ENTRYPOINT ["dotnet", "CordNotifier.dll"]

where dotnet-core-sdk-2.2-debug:latest comes from

FROM mcr.microsoft.com/dotnet/core/sdk:2.1

ENV ASPNETCORE_ENVIRONMENT=Development

# Global NuGet Configuration
COPY Packages/NuGet.config /root/.nuget/NuGet/NuGet.Config


# Populate Nuget Package Cache
COPY Packages Packages
RUN dotnet restore Packages/Packages.csproj; exit 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM