我能够在 Docker Desktop 上运行该应用程序。 我能够将其部署到天蓝色容器注册表。 但是创建容器实例失败。
我有点不知道如何正确更改我的 dockerfile 以使用列出的支持版本之一。
我能够在 .NET 7 中运行测试 docker 实例(设置起来更加友好)。 但是,我有一个针对 .NET Framework 4.8 的主要第三方依赖项。
错误:
{"code":"DeploymentFailed","target":"/subscriptions/.../deployments/Microsoft.ContainerInstances-20231003202653","message":"至少一项资源部署操作失败。请列出部署操作以了解详细信息。有关使用详细信息,请参阅 https://aka.ms/arm-deployment-operations。","details":[{"code":"UnsupportedWindowsVersion","message":"不支持的 Windows 映像版本。支持的版本为“Windows Server 2019 - 2B 之前、Windows Server 2019 - 2B 之后、Windows Server、版本 1903 - 2B 之后、Windows Server、版本 2004、Windows Server 2022、Windows Server LTSC Preview Build”"}]}
Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS build
WORKDIR /app
COPY \*.csproj .
RUN dotnet restore
COPY . .
WORKDIR /app
RUN dotnet publish -c Release -o out --no-restore
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT \["MyApp.exe"\]
SDK风格项目:
<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net48</TargetFramework>
<DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
<DockerfileContext>.</DockerfileContext>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />>
</ItemGroup>
</Project>
app.manifest 提升应用程序能够读取/写入注册表。
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="WorkShark48.exe" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
https://hub.docker.com/_/microsoft-dotnet-framework-sdk/
看起来 docker 文件正在使用 操作系统版本:windowsservercore-ltsc2022
这可能会导致您看到的错误。
尝试将标签更改为: 4.8-windowsservercore-ltsc2019 或 4.8-windowsservercore-ltsc2016 而不是 4.8,看看是否可以解决该错误。