You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署NodeJS应用至生产服务器:构建期间服务不可用问题求助

部署NestJS API时的服务不可用问题及解决办法

问题背景

我有一个基于NestJS开发的Node.js应用,通过CodePipeline搭配AWS Elastic Beanstalk部署到生产环境。这个应用是供第三方企业调用的API,但每次部署新版本时,因为要执行npm run build、npm run start:prod这类构建启动流程,会出现服务不可用的情况。我考虑过创建独立的dist/目录存放构建产物再复制部署,但不确定这种方式是否可行,想请教解决建议。

可行解决方案

部署策略优化

  • 蓝绿部署:同时维护两套生产环境——蓝环境运行当前稳定版本,绿环境部署新版本。待绿环境完成部署并通过健康检查后,切换流量至绿环境,实现零停机更新。
  • Immutable部署策略:修改Elastic Beanstalk的部署策略为Immutable模式。该模式会创建全新的EC2实例部署新版本,待新实例全部健康就绪后,再逐步替换旧实例,彻底避免原实例在构建启动阶段无法提供服务的问题。

构建产物预生成部署

你考虑的dist/目录部署方式完全可行:

  • 在CodePipeline的构建阶段提前执行npm run build生成编译后的dist/产物,之后仅将dist/目录、package.json、package-lock.json(或yarn.lock)等必要文件打包部署到Elastic Beanstalk,跳过实例端的构建步骤,减少启动等待时间。不过这种方式仅能缩短不可用时长,单实例部署场景下仍可能存在短暂中断,建议结合上述部署策略使用。

内容的提问来源于stack exchange,提问作者keesiari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:02:47