我正在尝试将容器化的ASP.NET Core 3.1应用程序部署到Azure Azure容器实例(ACI)中。
该应用程序是一个新创建的,具有Docker支持的Visual Studio 2019 Asp.NET Core Web应用程序。 它可以在本地构建并正常运行。
使用Visual Studio 2019中的发布向导在Azure容器注册表(ACR)中进行发布也会成功。
当我尝试使用该映像(通过门户)将容器旋转到Azure容器实例中时,就会出现问题。失败并显示以下错误:
decoder_targets_one_hot = np.zeros((
len(input_sentences),
max_out_len,
num_words_output
),
dtype='float32'
)
DOCKERFILE下面(未从Visual Studio模板中修改)
{
"code":"DeploymentFailed",
"message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.",
"details":[{
"code":"BadRequest",
"message":"{
\"error\": {
\"code\": \"UnsupportedWindo wsVersion\",
\"message\": \"Unsupported windows image version. Supported versions are 'Windows Server 2016 - Before 2B, Windows Server 2019 - Before 2B, Windows Server 2016 - After 2B, Windows Server 2019 - After 2B'\"
}
}"
}]}
我希望作为一个全新的Visual Studio应用程序,我不需要进行任何更改即可使其正常工作,但事实并非如此。我该怎么做才能解决此问题?
更新1:
更改了DOCKERFILE 1903-> 1909
docker检查图像:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["WebApplication2/WebApplication2.csproj", "WebApplication2/"]
RUN dotnet restore "WebApplication2/WebApplication2.csproj"
COPY . .
WORKDIR "/src/WebApplication2"
RUN dotnet build "WebApplication2.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication2.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
结果:无变化,相同的错误消息
更新2:
更改了DOCKERFILE 1903-> 2004
结果:Visual Studio无法构建(F5)项目,出现以下错误:
错误CTC1014 Docker命令失败,退出代码为1。 Windows版本10.0.19041的映像与10.0.18363主机WebApplication2 C:\ temp \ WebApplication2 \ WebApplication2 \ Dockerfile 1不兼容
新的DOCKERFILE:
"Os": "windows",
"OsVersion": "10.0.18363.959",
答案 0 :(得分:1)
对“ 2B之前”和“ 2B之后”感到满意,但对“ 2B”却不满意。 Per MS中的图片(2B)发生了重大变化,后来得到了修复。
您是否可能已在2月初拉出了这张图片?如果是这样,那么您可能正在发布该损坏的版本。尝试运行docker inspect <image_id>
,查看操作系统版本是否至少为 “ 10.0.18362.719”。如果没有,您可以删除该图像并拉出新副本。
或者,您可以在Dockerfile中将“ 1903”都更改为“ 1909”或“ 2004”,然后尝试获取发布在“ 2B”之后的新版本的nanoserver。