SuperAPI AI 工具集

dotnet-containers

部署与运维

查看项目

更新于 10-16 02:33

技能介绍

用途:为 .NET 应用提供容器化最佳实践,覆盖多阶段 Dockerfile 模式、.NET 8+ 的 SDK 容器发布(dotnet publish /t:PublishContainer)、无根容器配置、层缓存优化与容器健康检查。

主要能力:多阶段构建将构建环境与运行环境分离,产出精简镜像;通过先复制项目文件再 dotnet restore、最后复制源码并 dotnet publish --no-restore 实现层缓存;.NET 8+ 可直接用 dotnet publish --os linux --arch x64 /t:PublishContainer 生成 OCI 镜像,并可在 .csproj 中配置 ContainerBaseImage、ContainerImageName、ContainerImageTag、ContainerPort、ContainerEnvironmentVariable、ContainerLabel 等;基础镜像可选 aspnet、runtime、runtime-deps 及 chiseled(无 shell、无包管理器、默认非 root)变体;无根运行可用 USER 指令或 chiseled 镜像;健康检查可用 Docker HEALTHCHECK 或编排层探针。

使用方式:简单单项目 API 推荐 dotnet publish /t:PublishContainer;需要安装 OS 包、原生依赖或复杂 CI/CD 构建步骤时使用 Dockerfile。发布到远程仓库示例:dotnet publish --os linux --arch x64 /t:PublishContainer -p:ContainerRegistry=ghcr.io -p:ContainerRepository=myorg/myapi。

适用场景:.NET Web API、控制台应用、Worker 服务的容器化与镜像发布。

限制与注意:最终镜像不要使用 SDK 镜像;镜像标签建议用 10.0 而非补丁版本;chiseled 镜像无 curl/shell,不能用 HEALTHCHECK,应改用编排层探针;非 root 容器不能绑定 1024 以下端口,.NET 容器默认 8080;务必包含 .dockerignore;单独 restore 后 publish 需加 --no-restore。依赖注入、Kubernetes 部署、CI/CD 集成与容器化测试不在本技能范围内。