用途:为 NestJS 应用提供生产部署与运维标准(优先级 P1 运维),聚焦 Docker 优化、内存调优与优雅关闭等部署实践。
主要能力与用法: Docker 优化:强制使用多阶段构建;构建阶段安装 devDependencies 并执行 nest build,运行阶段仅复制 dist 与裁剪后的 node_modules,使用 node:alpine 镜像;安全上禁止以 root 运行,Dockerfile 中设 USER node。
运行时调优:容器内存不等于 Node 内存,需显式设置 Max Old Space,命令为 node --max-old-space-size=XXX dist/main;计算方式约为 Kubernetes Limit 的 75-80%(如 Limit 1GB 对应 OldSpace 800MB)。
优雅关闭:监听 SIGTERM;NestJS 中 app.enableShutdownHooks() 为必需;在 K8s 中增加 5-10 秒的 Pre-Stop 休眠,待负载均衡器排空连接后再停止 Node 进程接收流量。
初始化模式:数据库迁移的反模式是在 main.ts 启动时运行;推荐在 Kubernetes 中使用 Init Container,在应用容器启动前执行 npm run typeorm:migration:run。
环境变量与 CI/CD:若修改 src/config/env.validation.ts 新增环境变量,必须在部署管线或基础设施即代码中显式映射。Cloud Run/ECS 需在服务定义中显式传入;Kubernetes 需加入 Deployment 清单或 ConfigMap/Secret;Lambda/Serverless 需加入 serverless.yml 或提供商控制台。根本规则:应用代码的配置变更对基础设施层属于破坏性变更,不可假设环境变量可继承。
适用场景:需要将 NestJS 服务容器化并部署到 Kubernetes、Cloud Run、ECS 或 Serverless 平台的团队。
限制:资料未提供具体版本兼容性、镜像体积指标、不同云平台详细配置示例及成本说明。