【发布时间】:2020-11-12 19:08:57
【问题描述】:
我正在尝试将容器化的 ASP.NET Core 3.1 应用程序部署到 Azure Azure 容器实例 (ACI)。
该应用是全新创建的 Visual Studio 2019 Asp.NET Core Web 应用,支持 Docker。 它在本地构建和运行良好。
使用 Visual Studio 2019 中的发布向导在 Azure 容器注册表 (ACR) 中发布也成功。
当我尝试使用该映像(通过门户)将容器启动到 Azure 容器实例时,问题就出现了。这失败并出现以下错误:
{
"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'\"
}
}"
}]}
在 DOCKERFILE 下方(与 Visual Studio 模板无关)
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"]
我希望作为一个全新的 Visual Studio 应用程序,我不需要进行任何更改即可使其正常工作,但似乎并非如此。我应该怎么做才能解决这个问题?
更新 1:
更改 DOCKERFILE 1903 -> 1909
docker 检查图像:
"Os": "windows",
"OsVersion": "10.0.18363.959",
结果:没有变化,同样的错误信息
更新 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:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-2004 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-2004 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"]
【问题讨论】:
-
在这里查看可用版本hub.docker.com/_/microsoft-windows-nanoserver,并尝试其他版本。
-
我也有同样的问题。根据文档,我尝试了许多版本都在 2B 之后,但没有运气。你能弄明白吗?
-
这有什么更新吗? @AR你能解决这个问题吗?
标签: c# visual-studio azure docker asp.net-core