我有一个运行节点应用程序的ec2实例。我正在考虑使用docker做一个容器实现。pm2正在运行两个应用程序,一个是实际的节点应用程序(express和pug),另一个是使用日程的cron作业。将我的应用程序放在一个容器中是个好主意吗?
我还不熟悉这方面的利弊,我读到码头已经是一个过程经理。一旦我实现了,pm2将如何适应所有这一切。或者,我应该放弃docker,在我的ec2的本地linux中运行应用程序。
发布于 2021-11-23 22:53:34
你有几个问题,我试着回答如下:
1.把我的应用程序放在一个容器中是个好主意吗?
这取决于,有很多情况下您希望运行同一个容器来执行多个事情。但它实际上取决于任务的CPU/RAM/内存使用情况。它多久跑一次?
无论如何,根据我的经验,如果我从同一个容器运行一个cron作业,我总是使用NodeJS核worker_threads或cluster模块来使用工作方法。因为您不希望cron作业影响主线程的行为。我有一个在以下存储库中的多个线程上运行2个应用程序的示例。
2.我是否应该抛弃docker,在ec2的本地linux中运行应用程序?
Docker和PM2是两个非常不同的东西。Docker基本上是用来封装整个Node应用程序的,所以它更容易上船。PM2是节点的流程管理器,确保应用程序已经启动,并附带了一些很好的度量标准,并在PM2度量标准上记录UI。您肯定可以在一起使用2,因为PM2还确保应用程序在崩溃后会启动。
但是,如果使用pm2,则必须在使用停靠器时使用PM2-运行时。示例Dockerfile:
FROM node:16.9.0
WORKDIR /home/usr/app
COPY . .
RUN npm ci && npm run build
# default command is starting the server
CMD ["npx", "pm2-runtime", "npm", "--", "start"]https://stackoverflow.com/questions/70088495
复制相似问题