SuperAPI AI 工具集

container-publish

设计与创作

查看项目

更新于 10-15 19:51

技能介绍

用途:该技能介绍 .NET 10 SDK 的容器发布功能,无需编写 Dockerfile,直接用 dotnet publish /t:PublishContainer 从项目构建符合 OCI 规范的容器镜像。

主要能力:支持最小化发布、在 .csproj 中通过 MSBuild 属性配置容器(如 ContainerRepository、ContainerFamily、ContainerPort、ContainerEnvironmentVariable、ContainerLabel);支持 noble-chiseled 等精简基础镜像(无 shell、无包管理器,体积约 110 MB);默认以非 root 应用用户运行;支持多架构镜像(ContainerRuntimeIdentifiers 生成 OCI Image Index)、多标签(ContainerImageTags)、以及无需 Docker 守护进程的 tar 包输出(ContainerArchiveOutputPath)。

使用方式:最小发布命令为 dotnet publish /t:PublishContainer --os linux --arch x64。推送镜像前需先 docker login 或 az acr login,再通过 -p ContainerRegistry=... 指定仓库。多架构构建在项目文件中设置 RuntimeIdentifiers 与 ContainerRuntimeIdentifiers 后执行 dotnet publish /t:PublishContainer。CI 中可结合 GitHub Actions 的 setup-dotnet 与 docker/login-action 完成发布。

适用场景:标准 ASP.NET Core API、Worker 服务或控制台应用、多架构部署、无 Docker 守护进程的 CI 构建与镜像扫描。

限制:SDK 发布无法执行 apt-get 或安装原生 OS 包,需要系统包时应改用 Dockerfile 或自定义基础镜像;Azure Functions 不支持该方式;Windows 上需显式指定 --os linux 以避免生成 Windows 容器;推送前必须完成认证,否则报 CONTAINER1013 错误;应使用 ContainerRepository 而非已弃用的 ContainerImageName,并使用 /t:PublishContainer 而非 PublishProfile=DefaultContainer。