Docker - 框架 microsoft.AspNetCore.App,版本“3.1”未在构建中找到
Docker - The framework microsoft.AspNetCore.App, version '3.1'0 was not found on build
我正在尝试了解 docker 以及如何容器化 .NET 核心 Web 应用程序。我一直在遵循下面的教程并取得了很好的进展,除非我实际上 运行 我的项目。
https://devblogs.microsoft.com/premier-developer/running-a-net-core-web-application-in-docker-container-using-docker-desktop-for-windows/
我在 visual studio 中构建了一个 .NET Core 应用程序并正在使用 .NET Core 3.1,我(认为)已经验证了所有正确的 .NET Core 版本都已安装,但 docker 似乎认为什么都没有。我的项目构建正确,但是当我尝试 运行 它时,它向我咆哮说没有找到 .NET 框架。
我是 docker 和 .NET Core 的新手,所以我肯定会遗漏一些明显的东西,所以如果您有任何建议,请告诉我!谢谢!
dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.101
Commit: b377529961
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17763
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk.1.101\
Host (useful for support):
Version: 3.1.1
Commit: a1388f194c
.NET Core SDKs installed:
3.0.102 [C:\Program Files\dotnet\sdk]
3.1.101 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
docker拉mcr.microsoft.com/dotnet/core/runtime:3.1
3.1: Pulling from dotnet/core/runtime
ee446884f7be: Already exists
e60301a457d1: Already exists
9aa45ac596a4: Already exists
a0172a0e2f05: Already exists
0e4e03cc72ce: Already exists
d12a8fd361d3: Already exists
Digest: sha256:1a314313bbfc550897fb760dc05c816f42e7f911c8bb8a4c9b5bde3cdad6ac76
Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/runtime:3.1
mcr.microsoft.com/dotnet/core/runtime:3.1
docker 构建 -t aspnetapp。
将构建上下文发送到 Docker 守护进程 4.392MB
Step 1/10 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
---> abe8d004f003
Step 2/10 : WORKDIR /app
---> Using cache
---> baf04998e0f5
Step 3/10 : COPY *.csproj ./
---> Using cache
---> 57d5b8ce9b8b
Step 4/10 : RUN dotnet restore
---> Using cache
---> 3a78664422c1
Step 5/10 : COPY . ./
---> 7ad7515946be
Step 6/10 : RUN dotnet publish -c Release -o out
---> Running in 7b9fd1655346
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 41.18 ms for C:\app\aspnetapp.csproj.
aspnetapp -> C:\app\bin\Release\netcoreapp3.1\aspnetapp.dll
aspnetapp -> C:\app\bin\Release\netcoreapp3.1\aspnetapp.Views.dll
aspnetapp -> C:\app\out\
Removing intermediate container 7b9fd1655346
---> df9351064b25
Step 7/10 : FROM mcr.microsoft.com/dotnet/core/runtime:3.1
---> 96ec6546e277
Step 8/10 : WORKDIR /app
---> Running in 33e62d3940a5
Removing intermediate container 33e62d3940a5
---> 0fe4ecf63895
Step 9/10 : COPY --from=build-env /app/out .
---> fe8793b4a38d
Step 10/10 : ENTRYPOINT ["dotnet", "aspnetapp.dll"]
---> Running in a856a898d3f9
Removing intermediate container a856a898d3f9
---> 4802cf9997df
Successfully built 4802cf9997df
Successfully tagged aspnetapp:latest
docker文件
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
docker错误
docker run -p 8080:80 --name myapp aspnetapp
docker : It was not possible to find any compatible framework version
At line:1 char:1
+ docker run -p 8080:80 --name myapp aspnetapp
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (It was not poss...amework version:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found.
- No frameworks were found.
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=win10-x64
.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
docker 图片-ls
REPOSITORY TAG IMAGE ID CREATED SIZE
aspnetapp latest 4802cf9997df 14 minutes ago 326MB
<none> <none> df9351064b25 14 minutes ago 748MB
<none> <none> 05d5c7a53a75 18 minutes ago 748MB
<none> <none> cfc51668b9c9 40 minutes ago 400MB
<none> <none> c158d7286812 40 minutes ago 782MB
<none> <none> 42135746c732 About an hour ago 400MB
<none> <none> a898ac91a635 About an hour ago 748MB
<none> <none> 6c73f17b1c56 2 hours ago 1.66GB
<none> <none> bcdcd1874e78 2 hours ago 1.66GB
myimage latest 1b4d8c7dffe4 3 hours ago 341MB
mcr.microsoft.com/dotnet/core/samples aspnetapp 17070fe9e96c 8 days ago 346MB
mcr.microsoft.com/dotnet/core/samples latest 425e8480ff0f 8 days ago 322MB
hello-world latest 42514ac01c56 3 weeks ago 251MB
mcr.microsoft.com/dotnet/core/sdk 3.1 abe8d004f003 3 weeks ago 731MB
microsoft/dotnet sdk bd7379c04097 3 weeks ago 1.66GB
mcr.microsoft.com/dotnet/core/aspnet 3.1 704413499629 3 weeks ago 341MB
mcr.microsoft.com/dotnet/core/runtime 3.1 96ec6546e277 3 weeks ago 321MB
microsoft/dotnet 2.1-aspnetcore-runtime 3c196369ffdc 3 weeks ago 395MB
microsoft/dotnet aspnetcore-runtime 3c196369ffdc 3 weeks ago 395MB
microsoft/dotnet 3.0-aspnetcore-runtime 04b08b1edcee 11 months ago 437MB
对于 ASP.NET 核心,您需要来自 mcr.microsoft.com/dotnet/core/aspnet
的匹配容器映像。 mcr.microsoft.com/dotnet/core/runtime
没有额外的 ASP.NET 核心部分,它只对使用基本框架的 .NET Core 应用程序足够。
我使用 PowerShell 解决了 docker 安装 SDK 的问题:
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1
之后,我在我的项目中更改了 DockerFile 的这一行:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
至:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
我正在尝试了解 docker 以及如何容器化 .NET 核心 Web 应用程序。我一直在遵循下面的教程并取得了很好的进展,除非我实际上 运行 我的项目。
https://devblogs.microsoft.com/premier-developer/running-a-net-core-web-application-in-docker-container-using-docker-desktop-for-windows/
我在 visual studio 中构建了一个 .NET Core 应用程序并正在使用 .NET Core 3.1,我(认为)已经验证了所有正确的 .NET Core 版本都已安装,但 docker 似乎认为什么都没有。我的项目构建正确,但是当我尝试 运行 它时,它向我咆哮说没有找到 .NET 框架。
我是 docker 和 .NET Core 的新手,所以我肯定会遗漏一些明显的东西,所以如果您有任何建议,请告诉我!谢谢!
dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.101
Commit: b377529961
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17763
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk.1.101\
Host (useful for support):
Version: 3.1.1
Commit: a1388f194c
.NET Core SDKs installed:
3.0.102 [C:\Program Files\dotnet\sdk]
3.1.101 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
docker拉mcr.microsoft.com/dotnet/core/runtime:3.1
3.1: Pulling from dotnet/core/runtime
ee446884f7be: Already exists
e60301a457d1: Already exists
9aa45ac596a4: Already exists
a0172a0e2f05: Already exists
0e4e03cc72ce: Already exists
d12a8fd361d3: Already exists
Digest: sha256:1a314313bbfc550897fb760dc05c816f42e7f911c8bb8a4c9b5bde3cdad6ac76
Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/runtime:3.1
mcr.microsoft.com/dotnet/core/runtime:3.1
docker 构建 -t aspnetapp。 将构建上下文发送到 Docker 守护进程 4.392MB
Step 1/10 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
---> abe8d004f003
Step 2/10 : WORKDIR /app
---> Using cache
---> baf04998e0f5
Step 3/10 : COPY *.csproj ./
---> Using cache
---> 57d5b8ce9b8b
Step 4/10 : RUN dotnet restore
---> Using cache
---> 3a78664422c1
Step 5/10 : COPY . ./
---> 7ad7515946be
Step 6/10 : RUN dotnet publish -c Release -o out
---> Running in 7b9fd1655346
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 41.18 ms for C:\app\aspnetapp.csproj.
aspnetapp -> C:\app\bin\Release\netcoreapp3.1\aspnetapp.dll
aspnetapp -> C:\app\bin\Release\netcoreapp3.1\aspnetapp.Views.dll
aspnetapp -> C:\app\out\
Removing intermediate container 7b9fd1655346
---> df9351064b25
Step 7/10 : FROM mcr.microsoft.com/dotnet/core/runtime:3.1
---> 96ec6546e277
Step 8/10 : WORKDIR /app
---> Running in 33e62d3940a5
Removing intermediate container 33e62d3940a5
---> 0fe4ecf63895
Step 9/10 : COPY --from=build-env /app/out .
---> fe8793b4a38d
Step 10/10 : ENTRYPOINT ["dotnet", "aspnetapp.dll"]
---> Running in a856a898d3f9
Removing intermediate container a856a898d3f9
---> 4802cf9997df
Successfully built 4802cf9997df
Successfully tagged aspnetapp:latest
docker文件
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
docker错误
docker run -p 8080:80 --name myapp aspnetapp
docker : It was not possible to find any compatible framework version
At line:1 char:1
+ docker run -p 8080:80 --name myapp aspnetapp
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (It was not poss...amework version:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found.
- No frameworks were found.
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=win10-x64
.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
docker 图片-ls
REPOSITORY TAG IMAGE ID CREATED SIZE
aspnetapp latest 4802cf9997df 14 minutes ago 326MB
<none> <none> df9351064b25 14 minutes ago 748MB
<none> <none> 05d5c7a53a75 18 minutes ago 748MB
<none> <none> cfc51668b9c9 40 minutes ago 400MB
<none> <none> c158d7286812 40 minutes ago 782MB
<none> <none> 42135746c732 About an hour ago 400MB
<none> <none> a898ac91a635 About an hour ago 748MB
<none> <none> 6c73f17b1c56 2 hours ago 1.66GB
<none> <none> bcdcd1874e78 2 hours ago 1.66GB
myimage latest 1b4d8c7dffe4 3 hours ago 341MB
mcr.microsoft.com/dotnet/core/samples aspnetapp 17070fe9e96c 8 days ago 346MB
mcr.microsoft.com/dotnet/core/samples latest 425e8480ff0f 8 days ago 322MB
hello-world latest 42514ac01c56 3 weeks ago 251MB
mcr.microsoft.com/dotnet/core/sdk 3.1 abe8d004f003 3 weeks ago 731MB
microsoft/dotnet sdk bd7379c04097 3 weeks ago 1.66GB
mcr.microsoft.com/dotnet/core/aspnet 3.1 704413499629 3 weeks ago 341MB
mcr.microsoft.com/dotnet/core/runtime 3.1 96ec6546e277 3 weeks ago 321MB
microsoft/dotnet 2.1-aspnetcore-runtime 3c196369ffdc 3 weeks ago 395MB
microsoft/dotnet aspnetcore-runtime 3c196369ffdc 3 weeks ago 395MB
microsoft/dotnet 3.0-aspnetcore-runtime 04b08b1edcee 11 months ago 437MB
对于 ASP.NET 核心,您需要来自 mcr.microsoft.com/dotnet/core/aspnet
的匹配容器映像。 mcr.microsoft.com/dotnet/core/runtime
没有额外的 ASP.NET 核心部分,它只对使用基本框架的 .NET Core 应用程序足够。
我使用 PowerShell 解决了 docker 安装 SDK 的问题:
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1
之后,我在我的项目中更改了 DockerFile 的这一行:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
至:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build