Docker की कंटेनरीकरण तकनीक का उपयोग करके अपने Node.js REST API को डॉकराइज़ करें, जो परिनियोजन और प्रबंधन की प्रक्रिया को सरल करता है।

विभिन्न वातावरणों में अनुप्रयोगों को तैनात करने और चलाने की प्रक्रिया एक परेशानी हो सकती है क्योंकि विचार करने के लिए कई कारक हैं जैसे आवश्यक निर्भरताओं और विभिन्न सॉफ़्टवेयर पैकेजों के विशिष्ट संस्करणों को कॉन्फ़िगर करने के लिए पर्यावरण चर सेट अप करना।

हालाँकि, डॉकर की कंटेनरीकरण तकनीक का उपयोग करके, आप डॉकर छवि में सभी आवश्यक निर्भरताओं के साथ न्यूनतम प्रयास के साथ विभिन्न वातावरणों में अनुप्रयोगों को तैनात कर सकते हैं। मतलब, आपको कोई कॉन्फ़िगरेशन करने के बारे में चिंता करने की ज़रूरत नहीं है। यह विभिन्न वातावरणों में अनुप्रयोगों को तैनात करने और चलाने की प्रक्रिया को आसान बनाता है।

डॉकर क्या है?

डाक में काम करनेवाला मज़दूर एक विकास मंच है जो अनुप्रयोगों को पोर्टेबल छवियों के रूप में पैकेज करने के लिए उपकरण और पर्यावरण प्रदान करता है जिसे कंटेनरों में स्व-निहित निष्पादन योग्य घटकों के रूप में चलाया जा सकता है।

ये कंटेनर एप्लिकेशन के कोड और एप्लिकेशन के लिए आवश्यक निर्भरताओं का गठन करते हैं ताकि बिना किसी समस्या के अलग-अलग रनटाइम परिवेशों पर सफलतापूर्वक चलाया जा सके।

आरंभ करने से पहले, डॉकर को अपनी स्थानीय मशीन पर स्थापित करें। आधिकारिक दस्तावेज़ीकरण से प्लेटफ़ॉर्म-विशिष्ट पूर्वापेक्षाएँ और स्थापना निर्देश देखें।

Node.js REST API बनाएं

प्रारंभ करना, एक Node.js वेब सर्वर बनाएँ.

आप इस एप्लिकेशन का कोड इसमें पा सकते हैं गिटहब रिपॉजिटरी.

अगला, इस परियोजना के लिए आवश्यक संकुल अधिष्ठापित करें।

एनपीएम मॉर्गन पीजी क्नेक्स स्थापित करें

पीजी पैकेज का उपयोग PostgreSQL डेटाबेस के साथ संबंध स्थापित करने के लिए किया जाता है। knex, दूसरी ओर, PostgreSQL के साथ इंटरैक्ट करने के लिए एक सरल API प्रदान करता है - आप इसका उपयोग SQL क्वेरी लिखने के लिए करेंगे।

अंत में, आप प्रयोग करेंगे मॉर्गन, एक मिडलवेयर जो डॉकर कंटेनर में चल रहे आपके एप्लिकेशन को डिबग और मॉनिटर करने के लिए कंसोल पर HTTP अनुरोधों और प्रतिक्रियाओं को लॉग करता है।

अंत में, खोलें index.js फ़ाइल, और उसके नीचे कोड जोड़ें एक साधारण REST API लागू करता है तीन मार्गों के साथ।

कॉन्स्ट एक्सप्रेस = ज़रूरत होना("अभिव्यक्त करना")
कॉन्स्ट मॉर्गन = ज़रूरत होना("मॉर्गन")
कॉन्स्ट ऐप = एक्सप्रेस ()
कॉन्स्ट डीबी = ज़रूरत होना('./डीबी')
कॉन्स्ट पोर्ट = प्रक्रिया.env। पोर्ट || 5000

app.use (मॉर्गन ('देव'))
app.use (express.json ())
app.use (express.urlencoded ({ विस्तारित: सत्य }))

ऐप.गेट ('/', (req, res) => res.send ('हैलो वर्ल्ड!' ))

ऐप.गेट ('/उपयोगकर्ता', async (अनुरोध, रेस) => {
कॉन्स्ट उपयोगकर्ता = इंतजार db.चयन करें ()। से ('उपयोगकर्ता')
res.json (उपयोगकर्ता)
})

ऐप पोस्ट ('/उपयोगकर्ता', async (अनुरोध, रेस) => {
कॉन्स्ट उपयोगकर्ता = इंतजार डीबी ('उपयोगकर्ता')।डालना({ नाम: req.body.name }).वापसी ('*')
res.json (उपयोगकर्ता)
})

app.listen (पोर्ट, () => सांत्वना देना।लकड़ी का लट्ठा(`पोर्ट पर सर्वर:${पोर्ट}`))

डेटाबेस कनेक्शन कॉन्फ़िगर करें

REST API Docker के PostgreSQL उदाहरण के साथ इंटरैक्ट करेगा, हालाँकि, आपको पहले अपने एप्लिकेशन में डेटाबेस कनेक्शन को कॉन्फ़िगर करना होगा। अपने प्रोजेक्ट फ़ोल्डर की रूट डायरेक्टरी में, एक बनाएँ db.js फ़ाइल और नीचे कोड जोड़ें।

कॉन्स्ट क्नेक्स = ज़रूरत होना('नेक्स')
मापांक.निर्यात = क्नेक्स ({
ग्राहक: 'पोस्टग्रेज',
कनेक्शन: {
मेज़बान: 'डीबी',
उपयोगकर्ता: 'परीक्षक',
पासवर्ड: 'माईपासवर्ड123',
डेटाबेस: 'परीक्षक',

},
})

माइग्रेट.जेएस और सीड.जेएस फाइलें सेट करें

ये दो फाइलें डेटाबेस में एक तालिका बनाना और एपीआई के माध्यम से परीक्षण डेटा के साथ इसे पॉप्युलेट करना संभव बनाती हैं। एक नया फ़ोल्डर बनाएं, लिपियों, अपने प्रोजेक्ट की रूट डायरेक्टरी में और दो फाइलें जोड़ें: माइग्रेट.जेएस और बीज.जे.एस.

में माइग्रेट.जेएस फ़ाइल, नीचे कोड जोड़ें:

कॉन्स्ट डीबी = ज़रूरत होना('../डीबी');
(async () => {
कोशिश {
इंतजार db.schema.dropTableIfExists ('उपयोगकर्ता')
इंतजार db.schema.withSchema ('जनता')।तालिका बनाएं('उपयोगकर्ता', (टेबल) => {
तालिका वृद्धि ()
टेबल.स्ट्रिंग ('नाम')
})
सांत्वना देना।लकड़ी का लट्ठा('बनाई गई उपयोगकर्ता तालिका!')
प्रक्रिया.निकास (0)
} पकड़ना (गलती) {
सांत्वना देना.लॉग (त्रुटि)
प्रक्रिया.निकास (1)
}
})()

यह कोड एक बना देगा उपयोगकर्ताओं तालिका एक स्वत: वृद्धिशील आईडी कॉलम और ए के साथ नाम डेटाबेस में कॉलम।

अगला, में बीज.जे.एस फ़ाइल, नीचे कोड जोड़ें:

कॉन्स्ट डीबी = ज़रूरत होना('../डीबी');
(async () => {
कोशिश {
इंतजार डीबी ('उपयोगकर्ता')।डालना({ नाम: 'परीक्षण उपयोगकर्ता1' })
इंतजार डीबी ('उपयोगकर्ता')।डालना({ नाम: 'परीक्षण उपयोगकर्ता 2' })
सांत्वना देना।लकड़ी का लट्ठा('डमी उपयोगकर्ता जोड़े गए!')
प्रक्रिया.निकास (0)
} पकड़ना (गलती) {
सांत्वना देना.लॉग (त्रुटि)
प्रक्रिया.निकास (1)
}
})()

यह कोड एक एसिंक्रोनस फ़ंक्शन लागू करता है जो दो उपयोगकर्ताओं को PostgreSQL डेटाबेस में सम्मिलित करेगा।

अंत में, इन कमांड्स को अपने साथ जोड़ें पैकेज.जेसन फ़ाइल।

"स्क्रिप्ट्स": {
"शुरू करना": "नोड index.js",
"माइग्रेट": "नोड स्क्रिप्ट/माइग्रेट.जेएस",
"बीज": "नोड स्क्रिप्ट/seed.js"

},

चूंकि आपके पास क्लाइंट कॉन्फ़िगर नहीं है, एपीआई का परीक्षण करने के लिए, आपको दो फाइलों को स्क्रिप्ट के साथ चलाने की आवश्यकता होगी एनपीएम रन आज्ञा।

डॉकरफाइल सेट करें

डॉकरफाइल डॉकर छवि बनाने के लिए डॉकर इंजन द्वारा आवश्यक निर्देशों को परिभाषित करता है। अपने प्रोजेक्ट की रूट डायरेक्टरी में, एक नई फाइल बनाएं और उसे नाम दें, डॉकरफाइल. फिर, Node.js एप्लिकेशन के लिए डॉकर इमेज बनाने के लिए निम्नलिखित निर्देश जोड़ें।

से नोड:16.3.0-अल्पाइन3.13
वर्कडिर /app
कॉपी पैकेज * .json ./
दौड़ना एनपीएम इंस्टॉल करें
कॉपी. .
अनावृत करना8000
अध्यक्ष एवं प्रबंध निदेशक [ "नोड", "इंडेक्स.जेएस" ]

आइए इसे तोड़ दें:

  • से - यह निर्देश एप्लिकेशन के लिए आधार छवि सेट करता है, जो कि Node.js अल्पाइन छवि है, Node.js छवि का एक हल्का संस्करण है जो डॉकर रजिस्ट्री में पाया जा सकता है।
  • वर्कडिर - सेट /app निर्देशिका कार्यशील निर्देशिका के रूप में।
  • कॉपी पैकेज*.json./ - डॉकर को वर्तमान निर्देशिका से उस फ़ाइल नाम प्रारूप वाली सभी फ़ाइलों को कॉपी करने का निर्देश देता है /app फ़ोल्डर।
  • दौड़ना - छवि को क्रियान्वित और बनाता है।
  • कॉपी.. - स्रोत फ़ाइलों को इसमें कॉपी करता है /app फ़ोल्डर।
  • अनावृत करना - यह डॉकटर को निर्देश देता है कि वह कंटेनर के भीतर एक पोर्ट को बाहरी वातावरण में उजागर करे, इस मामले के लिए, होस्ट मशीन।
  • अध्यक्ष एवं प्रबंध निदेशक - छवि से डॉकर कंटेनर बनाए जाने पर निष्पादित होने वाली कमांड को निर्दिष्ट करता है।

डॉकर कंपोज फाइल बनाएं

Docker के PostgreSQL उदाहरण के साथ इंटरैक्ट करने के लिए Node.js एप्लिकेशन के लिए, दो एप्लिकेशन को एक ही नेटवर्क वातावरण में Docker कंटेनर में चलाने की आवश्यकता होती है।

इस कारण से, आपको एप्लिकेशन की छवि और उपयोग करने वाले PostgreSQL उदाहरण दोनों को परिभाषित और निर्मित करने की आवश्यकता है डॉकर कंपोज़ - एक उपकरण जो आपको कई डॉकटर कंटेनर बनाने और प्रबंधित करने की अनुमति देता है।

सीधे शब्दों में कहें, डॉकर कम्पोज़ का उपयोग करके, आप उन सेवाओं को परिभाषित कर सकते हैं जो आपके एप्लिकेशन को एक इकाई के रूप में बनाती हैं, इस मामले के लिए, Node.js REST API और PostgreSQL डेटाबेस।

एक नई फ़ाइल बनाएँ, docker-compose.yml, रूट डायरेक्टरी में और नीचे कोड जोड़ें:

संस्करण:'3.9'

सेवाएं:
सर्वर:
निर्माण:.
बंदरगाहों:
-'5000:5000'
पर निर्भर करता है:
-डाटाबेस
डीबी:
छवि:'पोस्टग्रेज'
बंदरगाहों:
-'4321:5432'
पर्यावरण:
पोस्टग्रेज_पासवर्ड:'माईपासवर्ड123'
POSTGRES_USER:'परीक्षक'
वॉल्यूम:
-डेटा: /var/lib/postgresql/data

वॉल्यूम:
आंकड़े:

यह कोड दो डॉकर कंटेनर बनाएगा और चलाएगा। पहला कंटेनर, सर्वर, Docker Compose इस कंटेनर के लिए छवि बनाने के लिए Dockerfile का उपयोग करता है।

यह यह भी निर्दिष्ट करता है कि सर्वर कंटेनर किस पर निर्भर करता है डाटाबेस कंटेनर। मतलब, द सर्वर कंटेनर के बाद शुरू किया जाना चाहिए डाटाबेस इससे जुड़ने के लिए कंटेनर।

दूसरा कंटेनर एक PostgreSQL डेटाबेस कंटेनर है। आपको इस कंटेनर के लिए डॉकरफाइल निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि यह डॉकर की छवि रजिस्ट्री पर पोस्टग्रेएसक्यूएल छवि से बनाया जाएगा।

डॉकर इमेज बनाएं

इमेज बनाने और दो कंटेनर शुरू करने के लिए डॉकर कंपोज़ कमांड का उपयोग करें।

डॉकर-कंपोज़ अप -डी

प्रक्रिया सफलतापूर्वक पूर्ण होने के बाद आपको इसी तरह की प्रतिक्रिया दिखाई देनी चाहिए।

REST API का परीक्षण करें

डॉकर कंटेनर में चल रहे REST API का परीक्षण करने के लिए नीचे दी गई कमांड चलाएँ। इसे PostgreSQL डेटाबेस में एक तालिका बनानी चाहिए।

docker exec docker_node-server-1 npm रन माइग्रेट करें

आपको इसी तरह की प्रतिक्रिया देखनी चाहिए।

डॉकर छवियों को साझा करना

अंतिम चरण आपके Node.js एप्लिकेशन के लिए डॉकर छवि को डॉकर हब पर धकेल रहा है। यह आपकी परियोजनाओं को GitHub पर धकेलने के समान है।

  • वहां जाओ डॉकर हब और एक खाते के लिए साइन अप करें और उपयोगकर्ता डैशबोर्ड में लॉग इन करें।
  • अगला, पर क्लिक करें रिपॉजिटरी बनाएं. अपनी रिपॉजिटरी का नाम प्रदान करें और इसकी दृश्यता को किसी एक पर सेट करें जनता या निजी और फिर क्लिक करें बनाएं.
  • अपने एप्लिकेशन की डॉकर छवि को डॉकर हब में धकेलने के लिए, आपको पहले टर्मिनल के माध्यम से अपने खाते में लॉग इन करना होगा और फिर अपना उपयोगकर्ता नाम और पासवर्ड प्रदान करना होगा।
डॉकर लॉगिन
  • अगला, इस प्रारूप से मेल खाने के लिए अपनी डॉकर छवि का नाम अपडेट करें: /. यह परिवर्तन करने के लिए नीचे दी गई कमांड चलाएँ:
 डॉकर टैग /
  • अंत में, अपनी डॉकर छवि को पुश करें।
 डोकर धक्का /

विकास में डॉकर का उपयोग करना

यह मार्गदर्शिका केवल उस क्षमता के एक अंश को छूती है जो डॉकर पेश कर सकता है। हालाँकि, अब आप किसी भी एप्लिकेशन और उसकी सभी निर्भरताओं को पैकेज करने के लिए डॉकर की कंटेनरीकरण तकनीक का उपयोग कर सकते हैं छवियां जिन्हें विभिन्न विकासों में तैनात किया जा सकता है, साथ ही बिना किसी क्लाउड जैसे उत्पादन वातावरण हिचकी।