SuperAPI AI 工具集

nestjs-deployment

部署与运维

查看项目

更新于 10-16 08:48

技能介绍

用途:为 NestJS 应用提供容器化与部署标准,优先级为 P1(高)。

主要能力与用法:编写多阶段 Dockerfile,构建阶段安装 devDependencies 并运行 nest build,运行阶段只复制 dist 与裁剪后的 node_modules;在 Dockerfile 中添加 USER node 使用非 root 用户运行;显式设置 Node 堆内存,命令为 node --max-old-space-size=XXX dist/main,取值约为容器内存限制的 75%–80%(如限制 1GB 对应 800MB);在 main.ts 中调用 app.enableShutdownHooks() 监听 SIGTERM 实现优雅关闭;在 Kubernetes 中配置 5–10 秒的 Pre-Stop sleep 钩子,让负载均衡器在 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 或云厂商控制台。

限制与说明:资料未提供具体价格、支持平台清单、完整 Dockerfile 长示例或版本兼容信息;编写 Dockerfile 示例仅提示参见实现示例,未展开代码内容。