Should I use forever/pm2 within a (Docker) container?

后端 未结 3 1008
囚心锁ツ
囚心锁ツ 2020-12-23 11:08

I am refactoring a couple of node.js services. All of them used to start with forever on virtual servers, if the process crashed they just relaunch.

Now

相关标签:
3条回答
  • 2020-12-23 11:38

    My take is do not use an in-container process supervisor (forever, pm2) and instead use docker restart policy via the --restart=always (or one of the other flavors of that option). This is more inline with the overall docker philosophy, and should operate very similarly to in-container process supervision since docker containers start running very quickly.

    The strongest advocate for running in-container process supervision I've seen is in the phusion baseimage-docker README if you want to explore the other position on this topic.

    0 讨论(0)
  • 2020-12-23 11:44

    Node needs clustering setup if you are running on a server with multiple CPUs.

    With PM2 you get that without writing any extra code. http://pm2.keymetrics.io/docs/usage/cluster-mode/

    Unless you are using a bunch of servers with single CPU instances than i would say use PM2 in production.

    pm2 will also be quicker to restart than docker

    0 讨论(0)
  • 2020-12-23 11:45

    While it's a good idea to use --restart=always as a failsafe, container restarting is relatively slow (5+ seconds with the simple Hello World Node server described here), so you can minimize app downtime using something like forever.

    A downside of restarting the process within the container is that crash recovery can now happen two ways, which might have implications for your monitoring, etc.

    0 讨论(0)
提交回复
热议问题