Birkaç sorunuz var, bunları aşağıda cevaplamaya çalışıyorum:
1. Uygulamalarımı tek bir kaba koymak iyi bir fikir mi?
Aynı kapsayıcıyı neden birden çok şey yaparak çalıştırmak istediğinize bağlı olarak birçok durum vardır. Ama gerçekten işin CPU / RAM / Bellek kullanımına bağlı. Ve ne sıklıkla çalışıyor?
Her neyse, tecrübelerime göre, aynı kapsayıcıdan bir cronjob çalıştırırsam, NodeJS çekirdeklerini kullanarak bunun için her zaman bir işçi yaklaşımı kullanacağımı söyleyebilirim worker_threads
veya cluster
modül. Çünkü bir cronjob'un ana iş parçacığının davranışını etkilemesini istemezsiniz. Aşağıdaki repoda birden çok iş parçacığında 2 uygulama çalıştırma örneğim var.
2. docker'dan vazgeçmeli ve uygulamaları ec2'imin yerel linux'unda çalıştırmalı mıyım
Docker ve PM2 2 gerçekten farklı şeylerdir. Docker temel olarak tüm Düğüm uygulamanızı kapsayacaktır, bu nedenle onu göndermek çok daha kolaydır. PM2, node için bir işlem yöneticisidir ve uygulamanızın çalıştığından emin olur ve bazı güzel metriklerle birlikte gelir ve PM2 metriklerinde kullanıcı arayüzünü günlüğe kaydeder. PM2, uygulamanızın çökmesinden sonra başlayacağından da emin olduğundan, 2'yi kesinlikle birlikte kullanabilirsiniz.
Ancak, pm2 kullanıyorsanız, docker'ı kullanırken pm2 çalışma zamanını kullanmanız gerekir. Örnek 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"]