Usted tiene un par de preguntas, trato de responder a ellos a continuación:
1. Es una buena idea para poner mis aplicaciones en un contenedor?
Depende, hay muchos casos de por qué te gustaría ejecutar el mismo contenedor hacer varias cosas. Pero realmente depende de la CPU/RAM/Memoria de uso del trabajo. Y ¿con qué frecuencia se ejecuta?
De todos modos a partir de la experiencia me puede decir si puedo ejecutar una tarea programada en el mismo recipiente, yo siempre uso un trabajador enfoque para esto utilizando NodeJS núcleos worker_threads
o cluster
el módulo. Porque usted no quiere que un cronjob impactos en el comportamiento de los principales hilo. Tengo un ejemplo de ejecución de 2 aplicaciones en múltiples hilos en la siguiente repo.
2. debo zanja ventana acoplable y ejecutar las aplicaciones en el nativo de linux de mi ec2
Ventana acoplable y PM2 son 2 cosas diferentes. Docker es, básicamente, containerize toda su Nodo de aplicación, por lo que es mucho más fácil para enviar. PM2 es un administrador de procesos por nodo y se asegura de que su aplicación está en marcha y viene con algunas buenas métricas y los registros de interfaz de usuario en PM2 métricas. Definitivamente, usted puede usar los 2 juntos, como PM2 hace también asegúrate de que tu aplicación se iniciará después de que se bloquea.
Sin embargo, si utiliza pm2 usted tiene que utilizar la pm2 de tiempo de ejecución cuando se utiliza ventana acoplable. Ejemplo 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"]