workers pricing node multiple keymetrics node.js docker coreos microservices

node.js - pricing - pm2-docker



¿Debo usar forever/pm2 dentro de un contenedor(Docker)? (2)

Estoy refactorizando un par de servicios de node.js. Todos ellos solían comenzar forever en servidores virtuales, si el proceso se caía, simplemente relanzaban.

Ahora, al pasar a estructuras de aplicaciones contenedorizadas y sin estado, creo que el proceso debería salir y el contenedor debería reiniciarse en caso de falla.

¿Es eso correcto? ¿Hay beneficios o desventajas?


Mi opinión es que no use un supervisor de proceso en el contenedor (para siempre, pm2) y en su lugar use la política de reinicio del --restart=always través de --restart=always (o uno de los otros sabores de esa opción). Esto está más en línea con la filosofía general del docker, y debe operar de manera muy similar a la supervisión del proceso en el contenedor, ya que los contenedores docker comienzan a funcionar muy rápidamente.

El defensor más fuerte para ejecutar la supervisión de proceso en contenedor que he visto está en el Fusion baseimage-docker README si desea explorar la otra posición sobre este tema.


Si bien es una buena idea usar --restart=always como un failsafe, el reinicio del contenedor es relativamente lento (5+ segundos con el simple servidor Hello World Node descrito here ), por lo que puede minimizar el tiempo de inactividad de la aplicación utilizando algo así como forever .

Una desventaja de reiniciar el proceso dentro del contenedor es que la recuperación de fallos ahora puede ocurrir de dos maneras, lo que podría tener implicaciones para su monitoreo, etc.