搜索

首页  >  问答  >  正文

使用 docker 运行 node 需要使用 pm2吗?

使用 docer 应该尽量遵循 one process per container
但是 node 挂了怎么办?
我尝试在容器内使用 Pm2,但是容器一起来就结束了, docker 容器至少需要保证有一个进程,如果没有就会退出.可是我使用pm2为什么不行呢?
如果不能使用 pm2, docker run restart always 可以解决吗?

世界只因有你世界只因有你2854 天前1724

全部回复(4)我来回复

  • 怪我咯

    怪我咯2017-04-26 09:03:09

    pm2 用在 docker 里面的时候需要把 pm2 命令改成 pm2-docker 命令,这样就可以在前台运行。而且我个人感觉没有必要在 docker 中使用 pm2,如果 node 进程挂掉对应的容器也会停止运行,所以在启动 docker 容器的时候添加 restart=always 参数就可以自动重启了

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-26 09:03:09

    可以参考:pm2官网的docker集成文档

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-26 09:03:09

    你需要保证pm2在前台运行,也就是说说dockerfile中的CMD或者ENTRYPOINT中启动的进程不能以daemon方式运行

    回复
    0
  • 某草草

    某草草2017-04-26 09:03:09

    在运行容器时可以指定使用CPU核心数,如果只是分配一个核心的话就没有必要启动多个Node.js进程,因为CPU基本调度单位是线程,只有一个核心意味着运行一个Node.js进程就可以

    回复
    0
  • 取消回复