基本的容器化ASP.NET 3.1核心应用程序到Azure ACI的部署失败

时间:2020-07-23 05:58:34

标签: c# visual-studio azure docker asp.net-core

我正在尝试将容器化的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'
)

Azure Portal Screenshot

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",

1 个答案:

答案 0 :(得分:1)

对“ 2B之前”和“ 2B之后”感到满意,但对“ 2B”却不满意。 Per MS中的图片(2B)发生了重大变化,后来得到了修复。

您是否可能已在2月初拉出了这张图片?如果是这样,那么您可能正在发布该损坏的版本。尝试运行docker inspect <image_id>,查看操作系统版本是否至少为 “ 10.0.18362.719”。如果没有,您可以删除该图像并拉出新副本。

或者,您可以在Dockerfile中将“ 1903”都更改为“ 1909”或“ 2004”,然后尝试获取发布在“ 2B”之后的新版本的nanoserver。