Docker ASP.NET核心应用程序突然需要没有更改的新特定版本
我有一个ASP.NET核心应用程序在Docker容器(2.1-aspnetcore-runtime)中运行 带应用程序的docker容器在两个月内没有出现任何问题。最近我不得不更新AppSettings中的ConnectionString。因此,我更改了JSON文件并部署了一个新的docker版本 这导致了以下消息:Docker ASP.NET核心应用程序突然需要没有更改的新特定版本,docker,asp.net-core,asp.net-core-2.1,Docker,Asp.net Core,Asp.net Core 2.1,我有一个ASP.NET核心应用程序在Docker容器(2.1-aspnetcore-runtime)中运行 带应用程序的docker容器在两个月内没有出现任何问题。最近我不得不更新AppSettings中的ConnectionString。因此,我更改了JSON文件并部署了一个新的docker版本 这导致了以下消息: It was not possible to find any compatible framework version The specified framework 'Micr
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.6' was not found.
- Check application dependencies and target a framework version installed at:
/usr/share/dotnet/
- Installing .NET Core prerequisites might help resolve this problem:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
- The .NET Core framework and SDK can be installed from:
https://aka.ms/dotnet-download
- The following versions are installed:
2.1.4 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
为什么应用程序突然需要版本“2.1.6”?应用程序没有改变,两个月前版本“2.1.6”甚至不存在
除此之外,“2.1.6”(2.1.6-aspnetcore-runtime)还有一个特定的Docker容器。为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供
为什么应用程序突然需要版本“2.1.6”?应用程序没有改变,两个月前版本“2.1.6”甚至不存在
这个很容易解释。较新的ASP.NET Core 2.1(及更高版本)模板是使用forMicrosoft.AspNetCore.All
/Microsofot.AspNetCore.App
软件包生成的
在ASP.NET Core 2.1或更高版本中,可以指定Microsoft.AspNetCore.All包引用,而不指定版本。未指定版本时,SDK(Microsoft.NET.SDK.Web)将指定隐式版本。我们建议依赖SDK指定的隐式版本,而不要在包引用上显式设置版本号。如果您对这种方法有疑问,请在Microsoft.AspNetCore.App隐式版本的讨论中留下GitHub评论
您在csproj中的条目将如下所示
<PackageReference Include="Microsoft.AspNetCore.All" />
而不是
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.4" />
这确保每次重建都将使用/拾取系统上可用的最新次要软件包。这适用于便携式应用程序。Self-contained基本上也这样做,但在发布时运行时可用
这就是问题的根源
为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供
在创建/构建(或运行)docker容器之前,您可能没有运行docker pull microsoft/dotnet:2.1-aspnetcore-runtime
如果您不这样做,它将使用本地标记的最新版本(但不是docker hub上该标记可用的最新版本),因为
microsoft/dotnet:2.1-aspnetcore-runtime
在发布时将指向较新的次要版本,但这需要您进行新的拉取,以获取(重新)标记图像的最新版本 为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供?在创建(或运行)docker容器之前,您可能没有运行docker pull microsoft/dotnet:2.1-aspnetcore-runtime
。如果您不这样做,它将使用最新的本地标记版本(但不是docker hub上该标记可用的最新版本),因为microsoft/dotnet:2.1-aspnetcore-runtime
在发布时将指向较新的次要版本,但这需要新的拉取it@Tseng谢谢,我会试试的。这可能就是问题所在