node.js 在 docker 中有子进程

node.js with child processes in docker

我有一个 node.js Web 应用程序,它使用 nginx 和 pm2 在我的亚马逊 aws 服务器上运行。应用程序为用户处理文件,这是使用作业系统和子进程完成的。简而言之,当应用程序通过 pm2 启动时,我为服务器的每个 cpu 核心创建了一个子进程。然后每个子进程(工作者)完成作业队列中的作业。

我的问题是,我可以在 docker 中复制它还是需要以某种方式修改它。我的一个假设是我需要为数据库创建一个容器,为应用程序创建一个容器,然后是多个工作容器来进行处理,这样如果一个崩溃我就启动另一个工作人员。

我一直在网上做研究,包括一个 udemy 课程来让我了解这些东西,但我还没有遇到一个例子或与我的 problem/question 相关的东西。

如有任何帮助、阅读 material 或建议,我们将不胜感激。

容器 运行 与主机 OS 性能水平相同。不会影响流程性能。我创建了 a whitepaper with Docker and HPE on this.

您不会使用 pm2 或 nodemon,它们旨在启动您的节点应用程序的多个进程并在它们失败时重新启动它们。这就是现在 Docker 的工作。

如果在 Swarm 中,您只需将服务的副本数增加到与您希望在 swarm 中同时 运行 的 CPU/threads 数量相似。

我在 node-docker-good-defaults 中没有提到 Swarm 的 nodemon/pm2 事情,所以我会把它作为一个问题来更新它。