Você tem um par de perguntas, tento respondê-las abaixo:
1. É uma boa idéia para colocar o meu aplicações em um contêiner?
Depende, há muitos casos em que você gostaria de executar o mesmo recipiente de fazer várias coisas. Mas realmente depende do CPU/RAM/uso da Memória de trabalho. E como muitas vezes faz-lo funcionar?
Qualquer forma de experiência, posso dizer que se eu executar um cron do mesmo recipiente, eu usaria sempre que um trabalhador abordagem para esta usando NodeJS núcleos worker_threads
ou cluster
módulo. Porque você não deseja que um cron afeta o comportamento da thread principal. Eu tenho um exemplo de execução 2 aplicações em vários segmentos na seguinte repo.
2. devo apenas vala janela de encaixe e executar os aplicativos no linux nativo da minha ec2
Janela de encaixe e PM2 são 2 realmente coisas diferentes. Janela de encaixe é, basicamente, a containerize todo o seu Nó de aplicativo, então é muito mais fácil para enviá-lo. PM2 é um gerenciador de processos para o nó e torna-se seu aplicativo é e vem com algumas boas métricas e logs de INTERFACE de usuário no PM2 métricas. Você pode definitivamente usar os 2 juntos, como PM2, faz também a certeza de que seu aplicativo será iniciado após a falha.
No entanto, se você usar pm2, você tem que usar o pm2-tempo de execução ao usar a janela de encaixe. Exemplo 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"]