关于 node 项目部署问题。

341 天前
 zqguo

请教下大家,node 项目部署,使用 pm2 管理还是 docker 管理好?

3100 次点击
所在节点    Node.js
29 条回复
smallWang
341 天前
都行 反正守护进程是为了保活 ,docker 要保活的话不得搭配 k8 的探针吗? 或者自己写脚本
zqguo
341 天前
@smallWang 保活是指开机自启吗?
dream4ever
341 天前
@zqguo 保活是指挂掉之后自动启动,和开机启动是两回事,Google 一下就能知道区别了。
jabinsun
341 天前
@smallWang
@zqguo
docker 可以搭配 HEALTHCHECK
smallWang
341 天前
@zqguo ?你都不知道吗,不知道那就不建议用它
pm2 是一个带有负载均衡功能的 Node 应用的多进程管理器,虽然是为 node 开发的,但也能管理其他程序进程
当你要把你的独立代码利用全部的服务器上的所有 CPU ,并保证进程永远都活着,0 秒的重载,PM2 是完美的。

主要特性:
1 、多进程启动项目,内建负载均衡(使用 Node cluster 集群模块)
2 、可启动静态文件服务(类似 nginx 静态服务)
3 、可使用插件分割日志
4 、可通过重启策略配置条件重载(可以运行一些脚本,定时任务等)
5 、可以配置部署命令,轻量化一键部署项目(小项目可用,跟 devops 差得远)
6 、有 pm2 服务接口,可远程获取 pm2 集群数据
7 、具有 Ubuntu 和 CentOS 的启动脚本

保活是为了让你 node 因为各种意外死掉之后可以自动重启
pm2 很屌,我没用= =
你的目的是啥?单纯的想把 node 部署到服务器上吗?那直接 node xxx.js 不就行了
zubincheung
341 天前
就是保持容器的活动状态,出现故障时自动重启,也可以用 docker compose, 设置 restart 为 always
smallWang
341 天前
@jabinsun 我喜欢写 while 1==1 然后 里面不停的起来 并且 sleep(20)
Usaki
341 天前
pm2 的日志能看的东西比较多,也比较齐全,还有高亮
lovedebug
341 天前
k8s + docker 化部署的
zenxds
341 天前
不应该是 docker 里面跑 pm2-runtime 吗[狗头]
Trim21
341 天前
docker ,还能顺便避免依赖问题
coderxy
341 天前
docker 比较好,因为 docker 还能保证实现线上版本控制, 而且后期如果上 K8s 也方便
zjsxwc
341 天前
要保活,不就 linux 自带的 systemd 加 1 行
Restart=always
就行了嘛。

花式根据 exit code 来保活 得看文档里这个 Restart 参数: http://www.freedesktop.org/software/systemd/man/systemd.service.html#Restart=
vueli
341 天前
pm2 再加自带的多线程
zqguo
341 天前
@smallWang #5 我的需求是无论是机器重启,还是因为什么原因进程挂了,都要常识启动,之前用了 docker compose 有个选项是 restart: always ,这个应该就是无论什么情况都会尝试重启。
wu67
341 天前
你可以容器 restart always, 也可以在容器里面用 pm2, 不太确定是不是所有的 node 进程挂掉的时候容器也是挂掉的, 所以我建议容器里面跑 pm2.

如果是测试环境, 其实直接在容器里面跑 node ***.js 就好了, 反正问题不大.
zqguo
341 天前
@wu67 正解
zbinlin
341 天前
@wu67 什么情况下 node 进程挂掉了而容器没挂的?
wu67
341 天前
@zbinlin nuxt 部分情况下出错导致整个服务 500 了, 但是容器还在 running...前端日常花式整活.
freak118
341 天前
@wu67 如果把 nuxt 作为 express 的中间件来使用 还会出现这种情况吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX