Vous avez un couple de questions, je vais essayer d'y répondre ci-dessous:
1. Est-ce une bonne idée de mettre mes applications dans un conteneur?
Ça dépend, il y a de nombreux cas pourquoi vous souhaitez exécuter le même conteneur de faire de multiples choses. Mais cela dépend vraiment de la CPU/RAM/Mémoire d'utilisation de l'emploi. Et combien de fois est-il exécuté?
De toute façon à partir de l'expérience je peux dire que si j'exécute une tâche cron dans le même contenant, je serais toujours utiliser un travailleur pour cette approche en utilisant soit NodeJS cœurs worker_threads
ou cluster
le module. Parce que vous ne voulez pas qu'une tâche cron impacts sur le comportement du thread principal. J'ai un exemple d'exécution de 2 applications sur plusieurs threads dans la suite de pensions de titres.
2. dois-je simplement fossé docker et d'exécuter les applications du natif de linux de mon ec2
Docker et PM2 sont 2 vraiment des choses différentes. Docker est essentiel de placer l'ensemble de votre Nœud de l'application, de sorte qu'il est beaucoup plus facile pour l'expédier. PM2 est un gestionnaire de processus par nœud et s'assure que votre application est en place et est livré avec quelques belles métriques et les journaux de l'INTERFACE utilisateur sur les PM2 métriques. Vous pouvez certainement utiliser les 2 ensemble, comme PM2 rend aussi sûr que votre application va démarrer après il se bloque.
Toutefois, si vous utilisez les pm2, vous devez utiliser les pm2 d'exécution lors de l'utilisation de docker. Exemple 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"]