Node.js 最优雅的部署方式是什么?

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Node.js 最优雅的部署方式是什么?
RT,因为最近发现一个问题,就是有些人会在 docker 里面使用 pm2 部署 nodejs 程序,
但是这样的话不就失去了 pm2 的 0 秒重启的功能了嘛?

8 回复

docker 化和 pm2 解决的不是一个问题呀
pm2 只是纵向的扩展,docker 是为了实现横向扩展


准确说 pm2 也是横向扩展,只是粒度更小而已

我一般是 nginx upstream 来切流量

用容器就不需要 pm2 了呀,平滑部署交给容器平台和负载均衡来做(这样实现的平滑部署是语言无关的)。

确实没必要,交给容器就可以了

我之前看了个 nodejs 的项目也是楼主说的这样.一个同步数据解析数据进数据库的进程,一个 api 接口应用进程,一个前端进程.用 pm2 启动.打包成一个镜像.

容器内用不用 pm2 看具体需求是什么,只是想启动的话确实没啥必要,但如果想用 pm2 现成的的日志机制、重启机制、Cluster 模式甚至 APM,也完全可以用呀。

个人感觉一般情况下对于 Node 技术栈来说在公有云上用容器和虚拟机的区别不大,本身部署就是 0 配置已经非常方便了,拉代码、装包、pm2 启动,就看哪个便宜。
除非严重依赖基于容器的 DevOps 以及 K8s 之类的集群方案。

像 Java Web 之类的可能对环境配置要求比较高的就非常适合用容器,做到开发、测试、上线环境统一。

Node.js的优雅部署方式涉及多个方面,以下是一些专业建议:

1. 使用版本管理工具

建议使用Node Version Manager(NVM)或类似的n工具来管理Node.js版本,这样可以轻松安装、切换和卸载不同版本的Node.js,满足不同项目的需求。

# 使用NVM安装Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install node

2. 项目打包与传输

在本地使用npm run build命令打包项目,然后通过FTP、Git部署或其他自动化工具(如CI/CD平台)将打包后的文件传输到服务器。

3. 服务器环境配置

在服务器上,确保已安装Node.js环境和必要的依赖包。可以使用包管理器(如apt、yum)或NVM进行安装。

4. 使用进程管理器

使用PM2等进程管理器来管理Node.js应用的进程,提供负载均衡、日志管理、监控和重启等功能。

# 安装PM2
npm install pm2 -g
# 启动项目
pm2 start npm --name nebula -- run start

5. 容器化部署

对于大型或复杂的应用,可以考虑使用Docker等容器技术将应用打包成容器,然后在Kubernetes等容器管理平台中进行部署和管理。

综上所述,优雅的Node.js部署方式应综合考虑版本管理、项目打包与传输、服务器环境配置、进程管理和容器化部署等多个方面。

回到顶部