जावास्क्रिप्ट कंटेनरीकरण: Node.js और फ्रंटएंड के लिए Docker

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आपका जावास्क्रिप्ट प्रोजेक्ट Docker का हकदार क्यों है?

\n\n

क्या आपने कभी यह वाक्य सुना है: "मेरी मशीन पर तो सब काम कर रहा था!"? यदि आप जावास्क्रिप्ट डेवलपर हैं, तो आपने निश्चित रूप से ऐसी स्थिति का सामना किया होगा जहां एप्लिकेशन स्थानीय रूप से ठीक चलता है, लेकिन सर्वर पर या किसी सहकर्मी के पास रहस्यमय त्रुटि के साथ क्रैश हो जाता है। Docker के साथ जावास्क्रिप्ट अनुप्रयोगों का कंटेनरीकरण इस समस्या को हमेशा के लिए हल करता है।

\n\n

Docker आपको अपने कोड, सभी निर्भरताओं (npm पैकेज), पर्यावरण चर और यहां तक कि Node.js के संस्करण को एक हल्के "कंटेनर" में पैकेज करने की अनुमति देता है। यह कंटेनर आपके लैपटॉप, AWS पर सर्वर और उस नौसिखिए के कंप्यूटर पर समान रूप से काम करेगा जिसने अभी-अभी Git इंस्टॉल किया है। इस लेख में, हम जावास्क्रिप्ट और Docker को एक साथ लाने का तरीका समझेंगे, वास्तविक कोड लिखेंगे और आपके अगले pet-प्रोजेक्ट के लिए production-ready इमेज बनाएंगे।

\n\n

जावास्क्रिप्ट डेवलपर के लिए Docker की मूल बातें

\n\n

कोड में गोता लगाने से पहले, आइए मुख्य अवधारणाओं को समझें। Docker एक वर्चुअल मशीन की तरह है, लेकिन बहुत हल्का। पूरे ऑपरेटिंग सिस्टम का अनुकरण करने के बजाय, यह होस्ट कर्नेल का उपयोग करता है और केवल आपके एप्लिकेशन को अलग करता है।

\n\n

Dockerfile — आपके एप्लिकेशन की रेसिपी

\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\n
    \n
  • इमेज (Image) — यह एक टेम्पलेट है। आप इसे एक बार बनाते हैं।
  • \n
  • कंटेनर (Container) — यह इमेज का एक चलता हुआ इंस्टेंस है। आप एक इमेज से 10 कंटेनर बना सकते हैं।
  • \n
\n\n

स्क्रैच से Node.js एप्लिकेशन बनाएं और इसे कंटेनरीकृत करें

\n\n

आइए एक सरल Express एप्लिकेशन लिखें और इसे Docker में पैकेज करें। यह जावास्क्रिप्ट कंटेनरीकरण की दिशा में हमारा पहला व्यावहारिक कदम होगा।

\n\n

चरण 1: एप्लिकेशन लिखें

\n\n

एक फ़ोल्डर docker-node-app बनाएं और उसके अंदर एक फ़ाइल server.js बनाएं:

\n\n
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\n

npm को इनिशियलाइज़ करें और express इंस्टॉल करें:

\n\n
npm init -y\nnpm install express
\n\n

अब हमारे पास एक काम करने वाला एप्लिकेशन है। इसे स्थानीय रूप से चलाएं: node server.js। http://localhost:3000 खोलें — आपको JSON दिखाई देगा।

\n\n

चरण 2: Dockerfile बनाएं

\n\n

प्रोजेक्ट की रूट में एक फ़ाइल Dockerfile (बिना एक्सटेंशन के) बनाएं:

\n\n
FROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "server.js"]
\n\n

एक .dockerignore जोड़ें ताकि इमेज में अनावश्यक फ़ाइलें कॉपी न हों:

\n\n
node_modules\nnpm-debug.log\n.git\n.gitignore\n.env\nDockerfile
\n\n

चरण 3: बिल्ड और चलाएं

\n\n

प्रोजेक्ट फ़ोल्डर में टर्मिनल खोलें और निष्पादित करें:

\n\n
docker build -t my-node-app .\ndocker run -p 3000:3000 my-node-app
\n\n

फ़्लैग

ब्लॉग

पुस्तक अनुशंसाएँ