आपका जावास्क्रिप्ट प्रोजेक्ट Docker का हकदार क्यों है?
\n\nक्या आपने कभी यह वाक्य सुना है: "मेरी मशीन पर तो सब काम कर रहा था!"? यदि आप जावास्क्रिप्ट डेवलपर हैं, तो आपने निश्चित रूप से ऐसी स्थिति का सामना किया होगा जहां एप्लिकेशन स्थानीय रूप से ठीक चलता है, लेकिन सर्वर पर या किसी सहकर्मी के पास रहस्यमय त्रुटि के साथ क्रैश हो जाता है। Docker के साथ जावास्क्रिप्ट अनुप्रयोगों का कंटेनरीकरण इस समस्या को हमेशा के लिए हल करता है।
\n\nDocker आपको अपने कोड, सभी निर्भरताओं (npm पैकेज), पर्यावरण चर और यहां तक कि Node.js के संस्करण को एक हल्के "कंटेनर" में पैकेज करने की अनुमति देता है। यह कंटेनर आपके लैपटॉप, AWS पर सर्वर और उस नौसिखिए के कंप्यूटर पर समान रूप से काम करेगा जिसने अभी-अभी Git इंस्टॉल किया है। इस लेख में, हम जावास्क्रिप्ट और Docker को एक साथ लाने का तरीका समझेंगे, वास्तविक कोड लिखेंगे और आपके अगले pet-प्रोजेक्ट के लिए production-ready इमेज बनाएंगे।
\n\nजावास्क्रिप्ट डेवलपर के लिए Docker की मूल बातें
\n\nकोड में गोता लगाने से पहले, आइए मुख्य अवधारणाओं को समझें। Docker एक वर्चुअल मशीन की तरह है, लेकिन बहुत हल्का। पूरे ऑपरेटिंग सिस्टम का अनुकरण करने के बजाय, यह होस्ट कर्नेल का उपयोग करता है और केवल आपके एप्लिकेशन को अलग करता है।
\n\nDockerfile — आपके एप्लिकेशन की रेसिपी
\n\nयह एक टेक्स्ट फ़ाइल है जिसमें आप बताते हैं कि इमेज कैसे बनानी है। Node.js एप्लिकेशन के लिए एक सामान्य Dockerfile इस प्रकार दिखता है:
\n\n# Node.js के आधिकारिक इमेज का उपयोग करें\nFROM node:18-alpine\n\n# कंटेनर के अंदर वर्किंग डायरेक्टरी सेट करें\nWORKDIR /app\n\n# package.json और package-lock.json कॉपी करें\nCOPY package*.json ./\n\n# निर्भरताएँ इंस्टॉल करें\nRUN npm ci --only=production\n\n# सोर्स कोड कॉपी करें\nCOPY . .\n\n# पोर्ट खोलें\nEXPOSE 3000\n\n# चलाने के लिए कमांड\nCMD ["node", "server.js"]\n\nध्यान दें: हम पहले package.json कॉपी करते हैं, फिर पूरा कोड। यह कोई संयोग नहीं है। Docker लेयर्स को कैश करता है, और यदि आपने निर्भरताएँ नहीं बदली हैं, तो npm ci चरण कोड में हर बदलाव पर पुनः शुरू नहीं होगा। इससे बिल्ड काफी तेज हो जाती है।
इमेज और कंटेनर
\n\n- \n
- इमेज (Image) — यह एक टेम्पलेट है। आप इसे एक बार बनाते हैं। \n
- कंटेनर (Container) — यह इमेज का एक चलता हुआ इंस्टेंस है। आप एक इमेज से 10 कंटेनर बना सकते हैं। \n
स्क्रैच से Node.js एप्लिकेशन बनाएं और इसे कंटेनरीकृत करें
\n\nआइए एक सरल Express एप्लिकेशन लिखें और इसे Docker में पैकेज करें। यह जावास्क्रिप्ट कंटेनरीकरण की दिशा में हमारा पहला व्यावहारिक कदम होगा।
\n\nचरण 1: एप्लिकेशन लिखें
\n\nएक फ़ोल्डर docker-node-app बनाएं और उसके अंदर एक फ़ाइल server.js बनाएं:
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n res.json({ \n message: 'कंटेनर से नमस्ते!',\n nodeVersion: process.version,\n environment: process.env.NODE_ENV || 'development'\n });\n});\n\napp.listen(PORT, () => {\n console.log(`सर्वर पोर्ट ${PORT} पर चल रहा है`);\n});\n\nnpm को इनिशियलाइज़ करें और express इंस्टॉल करें:
\n\nnpm init -y\nnpm install express\n\nअब हमारे पास एक काम करने वाला एप्लिकेशन है। इसे स्थानीय रूप से चलाएं: node server.js। http://localhost:3000 खोलें — आपको JSON दिखाई देगा।
चरण 2: Dockerfile बनाएं
\n\nप्रोजेक्ट की रूट में एक फ़ाइल Dockerfile (बिना एक्सटेंशन के) बनाएं:
FROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "server.js"]\n\nएक .dockerignore जोड़ें ताकि इमेज में अनावश्यक फ़ाइलें कॉपी न हों:
node_modules\nnpm-debug.log\n.git\n.gitignore\n.env\nDockerfile\n\nचरण 3: बिल्ड और चलाएं
\n\nप्रोजेक्ट फ़ोल्डर में टर्मिनल खोलें और निष्पादित करें:
\n\ndocker build -t my-node-app .\ndocker run -p 3000:3000 my-node-app\n\nफ़्लैग