SuperAPI AI 工具集

docker

部署与运维

查看项目

更新于 10-15 19:51

技能介绍

用途:为 .NET 10 应用提供 Docker 容器化实践,覆盖 Web API、Worker 服务、本地开发与 CI 构建等场景。

主要能力与原则:始终使用多阶段构建,在 SDK 镜像中构建、在 ASP.NET 运行时镜像中运行;默认以非 root 用户运行(.NET 8 起镜像内置 USER app);通过先复制 .csproj 并 restore 再复制源码来利用层缓存;健康探针放在编排层,暴露 /health/live 端点交由 Kubernetes 或 Compose 探测,因为标准 aspnet 与 chiseled 镜像不含 shell、curl、wget。

使用方式:多阶段 Dockerfile 示例中,构建阶段使用 mcr.microsoft.com/dotnet/sdk:10.0,复制项目文件后执行 dotnet restore,再复制全部源码并 dotnet publish -c Release -o /app/publish --no-restore;运行阶段使用 mcr.microsoft.com/dotnet/aspnet:10.0,设置 USER app,复制发布产物,EXPOSE 8080,ENTRYPOINT 为 dotnet MyApp.Api.dll。Compose 本地开发通过环境变量传连接字符串,并用 depends_on 配合健康检查。Program.cs 中可用 app.MapGet("/health/live", () => Results.Ok("healthy")) 提供轻量健康端点。

限制与反模式:不要用 SDK 镜像做运行时;不要在 restore 前复制全部源码;不要以 root 运行;若必须使用镜像内 HEALTHCHECK,需基于含 wget 的非 chiseled 镜像,且不要用重新运行应用二进制作为探针命令。密钥应通过环境变量或挂载传入,不写入镜像。