आप सवालों के एक जोड़े हैं, मैं उन्हें जवाब देने की कोशिश के नीचे:
1. यह एक अच्छा विचार है डाल करने के लिए अपने आवेदन में एक कंटेनर?
यह निर्भर करता है, वहाँ रहे हैं कई मामलों में क्यों आप चाहते हैं चलाने के लिए एक ही कंटेनर कर कई बातें हैं । लेकिन यह वास्तव में निर्भर करता है पर सीपीयू/राम/स्मृति के उपयोग की नौकरी. और कैसे अक्सर यह होता है चलाने के लिए?
वैसे भी अनुभव से मैं कह सकता हूँ अगर मैं चलाने के लिए एक cronjob से एक ही कंटेनर में, मैं हमेशा का उपयोग एक कार्यकर्ता के दृष्टिकोण के लिए इस का उपयोग कर या तो NodeJS कोर worker_threads
या cluster
मॉड्यूल. क्योंकि आप नहीं चाहते कि एक cronjob प्रभावों के व्यवहार का मुख्य सूत्र. मैं एक उदाहरण के साथ चल रहा है 2 अनुप्रयोगों पर कई सूत्र में निम्नलिखित रेपो.
2. चाहिए मैं बस खाई डोकर और चलाने के अनुप्रयोगों में देशी लिनक्स के ec2
डोकर और PM2 कर रहे हैं 2 वास्तव में अलग अलग चीजें हैं । डोकर मूल रूप से करने के लिए containerize अपने पूरे नोड app है, तो यह बहुत आसान है करने के लिए यह जहाज. PM2 है एक प्रक्रिया प्रबंधक के लिए नोड बनाता है और सुनिश्चित करें कि आपके अनुप्रयोग के लिए है और के साथ आता है कुछ अच्छा मीट्रिक और लॉग यूआई पर PM2 मेट्रिक्स. आप कर सकते हैं निश्चित रूप से उपयोग के 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"]