[英]Docker - The framework microsoft.AspNetCore.App, version '3.1'0 was not found on build
I'm attempting to learn about docker and how to containerize a .NET core Web app.我正在尝试了解 docker 以及如何容器化 .NET 核心 Web 应用程序。 I've been following the tutorial below and have made good progress except when I actually run my project.
我一直在关注下面的教程并且取得了很好的进展,除非我实际运行我的项目。
https://devblogs.microsoft.com/premier-developer/running-a-net-core-web-application-in-docker-container-using-docker-desktop-for-windows/
I built a .NET Core app in visual studio and am using .NET Core 3.1 and I (think) have verified all the correct .NET core versions are installed, but docker seems to think that nothing is there.我在 Visual Studio 中构建了一个 .NET Core 应用程序,并且正在使用 .NET Core 3.1,我(认为)已经验证了所有正确的 .NET Core 版本都已安装,但 docker 似乎认为什么都没有。 My project builds correctly but when I attempt to run it, it barks at me that no .NET frameworks were found.
我的项目构建正确,但是当我尝试运行它时,它对我咆哮说没有找到 .NET 框架。
I'm new to docker and .NET core so I could definitely be missing something obvious so let me know if you have any suggestions!我是 docker 和 .NET 核心的新手,所以我肯定会遗漏一些明显的东西,所以如果您有任何建议,请告诉我! Thanks!
谢谢!
dotnet --info 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\3.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 pull mcr.microsoft.com/dotnet/core/runtime:3.1码头工人拉 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 build -t aspnetapp . docker build -t aspnetapp 。 Sending build context to Docker daemon 4.392MB
将构建上下文发送到 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
dockerfile文件
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 error码头工人错误
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 .csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
docker image -ls泊坞窗图像 -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
For ASP.NET Core you need the matching container image from mcr.microsoft.com/dotnet/core/aspnet
.对于 ASP.NET Core,您需要来自
mcr.microsoft.com/dotnet/core/aspnet
的匹配容器映像。 mcr.microsoft.com/dotnet/core/runtime
doesn't have the extra ASP.NET Core pieces, it's only sufficient for .NET Core apps using the basic framework. mcr.microsoft.com/dotnet/core/runtime
没有额外的 ASP.NET Core 部分,它仅适用于使用基本框架的 .NET Core 应用程序。
I solve this installing SDK for docker with PowerShell:我用 PowerShell 解决了这个为 docker 安装 SDK 的问题:
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1
After that I change this lines of DockerFile in my project:之后,我在我的项目中更改了 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
to:到:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.