SuperAPI AI 工具集

dotnet-containers

部署与运维

查看项目

更新于 10-16 01:11

技能介绍

用途:为 .NET 应用提供容器化最佳实践,覆盖多阶段 Dockerfile、dotnet publish 容器镜像发布(.NET 8+)、非 root 容器配置、层缓存优化与容器健康检查。

主要能力:多阶段构建将构建环境与运行环境分离,产出精简镜像;按“最少变动优先”排列 COPY 指令以利用层缓存,先复制项目文件与 props 再 dotnet restore,最后复制源码并 dotnet publish --no-restore。.NET 8 起可用 dotnet publish --os linux --arch x64 /t:PublishContainer 直接生成 OCI 镜像,支持通过 MSBuild 属性配置基础镜像、镜像名、标签、端口、环境变量与标签,并可发布到远程仓库(ContainerRegistry、ContainerRepository)。基础镜像可选 aspnet、runtime、runtime-deps、alpine、chiseled 等,按体积与全球化需求选择。非 root 运行可用 USER 指令或 chiseled 镜像(默认非 root,UID 1654);非 root 无法绑定 1024 以下端口,容器默认使用 8080。健康检查可用 Docker HEALTHCHECK(chiseled 无 curl,需改用编排层探针)或应用内 MapHealthChecks 提供 live/ready 端点。

使用方式:简单单项目 API 推荐 dotnet publish /t:PublishContainer;需安装系统包、原生依赖或复杂 CI 步骤时用 Dockerfile。务必包含 .dockerignore 排除 .git、bin、obj 等。

限制与注意:最终镜像不要用 SDK 镜像;镜像标签建议用 10.0 而非补丁号以获取安全更新;chiseled 镜像无 shell 与包管理器;非 root 端口需 ≥1024;单独 restore 后 publish 必须加 --no-restore。DI 容器机制、Kubernetes/Compose 部署、CI/CD 集成与容器化测试不在本技能范围内。