मुख्य सामग्री पर जाएँ

Docker में MongoDB चलाना: उदाहरणों सहित पूर्ण मार्गदर्शिका

यह गाइड Docker में MongoDB चलाने की प्रक्रिया बताता है, जिसमें त्वरित कमांड-लाइन परिनियोजन और पूर्ण Docker Compose कॉन्फ़िगरेशन दोनों शामिल हैं। यह उन डेवलपर्स के लिए उपयुक्त है जो क्लाउड होस्टिंग में तुरंत जाए बिना स्व-होस्ट या लोकल रूप से प्रयोग करना चाहते हैं।
· 5 मि॰ पढ़ें

AI के साथ खोजें

तो आप MongoDB को स्व-होस्ट करना चाहते हैं या इसे लोकल सेटिंग में आज़माना चाहते हैं? यदि आप सीधे MongoDB Atlas में कूदना नहीं चाहते, तो शुरू करने के कुछ विकल्प हैं, जिनमें से एक है Docker के साथ कंटेनर। 

Docker का उपयोग आपकी MongoDB इंस्टेंस को प्रबंधित करने के लिए एक उत्कृष्ट विकल्प है, क्योंकि इसे सेटअप करने में एक मिनट से भी कम समय लगता है और इसे बनाए रखना या होस्ट कंप्यूटरों के बीच स्थानांतरित करना आसान होता है।

इस लेख में, हम Docker के साथ MongoDB को परिनियोजित करने के कुछ तरीकों को देखेंगे और रास्ते में कुछ टिप्स व ट्रिक्स भी जानेंगे। आप इस विषय का त्वरित सार समझने के लिए यह वीडियो भी देख सकते हैं।

पूर्वापेक्षाएँ

इस ट्यूटोरियल के साथ आगे बढ़ने के लिए, आपके कंप्यूटर पर Docker Engine इंस्टॉल होना चाहिए। यह macOS, Windows, या Linux पर हो सकता है। आपको स्पष्ट रूप से Docker Desktop इंस्टॉल करने की आवश्यकता नहीं है, लेकिन यह आपके ऑपरेटिंग सिस्टम के अनुसार Docker का अनुभव आसान बना सकता है। 

उदाहरण के लिए, मैं macOS पर Rancher Desktop के माध्यम से Docker Engine का उपयोग कर रहा हूँ और यह ठीक काम करता है।

यदि आप अपने Docker कौशल को तरोताज़ा करना चाहते हैं, तो मूल बातें पकड़ने के लिए Docker for Beginners: A Practical Guide to Containers देखना उपयोगी रहेगा।

MongoDB Docker इमेज डाउनलोड करना

Docker कंटेनर में MongoDB चलाने से पहले, आपको अपनी जरूरतों के अनुरूप इमेज डाउनलोड करनी होगी। कमांड लाइन से निम्नलिखित चलाएँ:

docker pull mongodb/mongodb-community-server:latest

ऊपर दिया गया कमांड MongoDB Community Edition (CE) की आधिकारिक इमेज को "latest" टैग के साथ डाउनलोड करेगा। 

यह नोट करना महत्वपूर्ण है कि mongodb/mongodb-community-server और mongodb/mongodb-enterprise-server MongoDB द्वारा प्रबंधित आधिकारिक Docker इमेज हैं। अन्य सभी इमेज बाहरी समुदाय द्वारा मेंटेन की जाती हैं और ये भिन्न या अप्रत्याशित परिणाम दे सकती हैं।

इमेज डाउनलोड होने के बाद, हम परिनियोजन विकल्पों को देख सकते हैं।

Docker Run कमांड के साथ MongoDB को एक अलग-थलग कंटेनर के रूप में चलाना

Docker के साथ MongoDB को परिनियोजित करने का सबसे तेज़ तरीका कुछ कॉन्फ़िगरेशन पैरामीटर के साथ बस docker run कमांड का उपयोग करना है। उदाहरण के लिए, आप अपनी कमांड लाइन से निम्नलिखित चला सकते हैं:

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latest

ऊपर दिया गया कमांड हमारी इमेज को लेगा और उसे "MongoDB" नामक कंटेनर के रूप में परिनियोजित करेगा। कंटेनर पोर्ट-मैप किया जाएगा, यानी होस्ट उस पर "27017" पोर्ट के माध्यम से इंटरेक्ट कर सकेगा। इस उदाहरण में रूट ऑथेंटिकेशन जानकारी भी सेट की गई है, लेकिन आपकी परिनियोजन आवश्यकताओं के आधार पर, आप Docker Secrets या संवेदनशील जानकारी पास करने के लिए कोई अन्य सुरक्षित तरीका उपयोग कर सकते हैं।

ऊपर के उदाहरण में, सभी डेटा कंटेनर के भीतर स्टोर होता है। MongoDB डेटा, जिसमें डेटाबेस, कलेक्शन और यहाँ तक कि डॉक्युमेंट भी शामिल हैं, केवल तब तक बना रहेगा जब तक वह विशेष कंटेनर मौजूद है। यह परीक्षण के लिए उपयुक्त हो सकता है, लेकिन अधिकतर स्थितियों में आप Docker में अपने MongoDB डेटा का विश्वसनीय स्थायित्व चाहेंगे। इसे संभालने के लिए, आपको निम्नलिखित कमांड का उपयोग करके एक Docker वॉल्यूम बनाना चाहिए:

docker volume create mongodb

अपने कंटेनर को वह वॉल्यूम उपयोग करने के लिए बताने हेतु, आप अपना परिनियोजन कमांड निम्नलिखित की तरह बदल सकते हैं:

docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latest

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

Docker कंटेनर के भीतर से MongoDB चलने पर, आप अपनी पसंद के किसी भी टूल से mongodb://nraboy:password1234@localhost:27017 कनेक्शन स्ट्रिंग का उपयोग करके उससे कनेक्ट कर सकते हैं।

Docker Compose के साथ अपने स्टैक या प्रोजेक्ट में MongoDB शामिल करना

यदि आप किसी विशेष प्रोजेक्ट के साथ MongoDB का उपयोग करने की योजना बना रहे हैं, जिसे Docker के साथ भी प्रबंधित किया जाता है, तो MongoDB को Docker Compose कॉन्फ़िगरेशन के साथ प्रबंधित करना समझदारी होगी। ये कॉन्फ़िगरेशन अक्सर आपके प्रोजेक्ट्स को सैंडबॉक्स करने के लिए उपयोग किए जाते हैं, जिन्हें आमतौर पर स्टैक कहा जाता है।

अपने कंप्यूटर पर कहीं भी निम्नलिखित सामग्री के साथ एक docker-compose.yml फ़ाइल बनाएँ:

services:
    mongodb:
        image: mongodb/mongodb-community-server:latest
        container_name: mongodb
        restart: unless-stopped
        ports:
            - "27017:27017"
        volumes:
            - mongodb:/data/db
        environment:
            MONGO_INITDB_ROOT_USERNAME: nraboy
            MONGO_INITDB_ROOT_PASSWORD: password1234

volumes:
    mongodb:
        external: true

ऊपर का कॉन्फ़िगरेशन वही जानकारी उपयोग करता है जो हमने एकल कमांड लाइन कमांड में पहले देखी है। दूसरे तरीके की तरह, यहाँ भी यह अपेक्षा है कि आपने पहले से Docker द्वारा प्रबंधित किए जाने के लिए mongodb वॉल्यूम बना लिया है। यदि आपको ऐसा करना है, तो एक बार फिर निम्नलिखित कमांड चलाएँ:

docker volume create mongodb

बेशक, आप अपने Docker वॉल्यूम को अपने अनुसार प्रबंधित कर सकते हैं। वॉल्यूम बनाना कई संभावनाओं में से सिर्फ एक है।

अपनी कमांड लाइन को उसी कार्यशील डायरेक्टरी में सेट करके जहाँ आपकी docker-compose.yml फ़ाइल है, निम्नलिखित कमांड चलाएँ:

docker compose up -d

यह कमांड आपके स्टैक को डिटैच्ड मोड में शुरू करता है। 

आप MongoDB Compass, किसी भाषा ड्राइवर जैसे Node.js, या MongoDB Shell जैसे टूल से अपनी इंस्टेंस से कनेक्ट करने का प्रयास करके सत्यापित कर सकते हैं कि सब कुछ काम कर रहा है। 

यदि आप उदाहरण का ठीक-ठीक अनुसरण कर रहे हैं, तो आपकी कनेक्शन स्ट्रिंग mongodb://nraboy:password1234@localhost:27017 होगी, लेकिन आपने कैसे अनुसरण किया है, इस पर निर्भर करते हुए यह भिन्न हो सकती है।

अपनी MongoDB इंस्टेंस को बंद करने के लिए, अपनी YAML कॉन्फ़िगरेशन वाली उसी कार्यशील डायरेक्टरी में रहते हुए कमांड लाइन से निम्नलिखित चलाएँ:

docker compose down

क्योंकि हम एक बाहरी वॉल्यूम का उपयोग कर रहे हैं, अगली बार जब आप अपना कंटेनर शुरू करेंगे, तो सब कुछ बना रहेगा।

निष्कर्ष

Docker स्व-होस्टेड या लोकल वातावरण में MongoDB के साथ काम करना आसान बनाता है। आपको सामान्य ऑपरेटिंग सिस्टम कॉन्फ़िगरेशन या एक कंप्यूटर से दूसरे कंप्यूटर के बीच मिलने वाले अनुभव की चिंता करने की आवश्यकता नहीं है। हर बार आपको एक सुसंगत अनुभव मिलेगा। 

अगले कदम के रूप में, MongoDB में डेटाबेस कैसे बनाते हैं यह सीखना उपयोगी रहेगा।

FAQs

क्या मैं Docker के साथ एक ही समय में कई MongoDB कंटेनर चला सकता/सकती हूँ?

हाँ, आप एक साथ कई MongoDB कंटेनर चला सकते हैं, बशर्ते प्रत्येक कंटेनर अलग पोर्ट पर मैप हो या टकराव से बचने के लिए अलग Docker नेटवर्क पर चले।

मैं Docker में MongoDB कंटेनर के डेटा का बैकअप कैसे लूँ?

बैकअप के लिए, आप docker cp का उपयोग करके वॉल्यूम से फ़ाइलें निकाल सकते हैं या कंटेनर के अंदर mongodump चला सकते हैं। परसिस्टेंट वॉल्यूम भी सेशंस के बीच डेटा को बनाए रखने में मदद करते हैं।

क्या Docker Compose फ़ाइल में MongoDB पासवर्ड रखना सुरक्षित है?

यह आदर्श नहीं है। इसके बजाय, Docker Secrets या संस्करण नियंत्रण से बाहर रखी गई पर्यावरण चर फ़ाइलें (.env) उपयोग करें ताकि संवेदनशील क्रेडेंशियल्स को सुरक्षित रूप से प्रबंधित किया जा सके।

क्या Windows पर Docker में MongoDB अच्छी तरह चलता है?

हाँ, विशेष रूप से Windows पर WSL 2 या Docker Desktop का उपयोग करने पर, संगतता सुनिश्चित करते हुए MongoDB Docker में Windows, macOS, और Linux पर सुचारू रूप से चलता है।

क्या मैं प्रोडक्शन में Docker के साथ MongoDB का उपयोग कर सकता/सकती हूँ?

हाँ, लेकिन प्रोडक्शन वातावरण में Dockerized MongoDB का उपयोग करने से पहले उचित नेटवर्किंग, स्टोरेज वॉल्यूम, प्रमाणीकरण और बैकअप सेटअप करना अनुशंसित है।

मैं किसी अन्य कंटेनर से Docker में चल रहे MongoDB से कैसे कनेक्ट करूँ?

Docker Compose का उपयोग करें और MongoDB कंटेनर को उसके सर्विस नाम को होस्टनेम के रूप में संदर्भित करें। यह एक ही नेटवर्क पर सेवा-से-सेवा संचार सक्षम करता है।

यदि मैं Docker का उपयोग करता/करती हूँ, तो क्या मुझे लोकल रूप से MongoDB इंस्टॉल करने की ज़रूरत है?

नहीं। Docker MongoDB को कंटेनराइज़्ड वातावरण में चलाता है, इसलिए आपको अपने होस्ट मशीन पर MongoDB सीधे इंस्टॉल करने की आवश्यकता नहीं है।

क्या मैं Dockerized MongoDB इंस्टेंस के साथ MongoDB Compass का उपयोग कर सकता/सकती हूँ?

बिल्कुल। सही कनेक्शन स्ट्रिंग (जैसे, mongodb://user:pass@localhost:27017) का उपयोग करके आप MongoDB Compass से अपने लोकल कंटेनर से कनेक्ट कर सकते हैं।

मैं Docker में MongoDB के प्रदर्शन की निगरानी कैसे करूँ?

आप प्रदर्शन ट्रैकिंग के लिए mongostat, mongotop, या Prometheus और Grafana जैसे बाहरी मॉनिटरिंग समाधानों को Docker के भीतर एकीकृत कर सकते हैं।

क्या मेरा MongoDB डेटा Docker कंटेनर में बना रहेगा?

जब तक आपने कंटेनर डायरेक्टरी को अपने होस्ट कंप्यूटर पर किसी वॉल्यूम से मैप करने का चयन किया है, अपडेट और लॉन्च के बीच डेटा बिना किसी समस्या के बना रहना चाहिए।

मुझे Docker उपयोग करना चाहिए या MongoDB Atlas?

अधिकांश परिस्थितियों में, उपलब्ध सुविधाओं, मूल्य निर्धारण और उपयोग में सरलता के कारण MongoDB Atlas का उपयोग करना बेहतर है, लेकिन Docker के माध्यम से MongoDB भी एक वैध विकल्प है।

क्या मुझे MongoDB के साथ Docker Desktop का उपयोग करना अनिवार्य है?

Docker Desktop अधिकतर समय Docker के साथ काम करना आसान बनाता है, लेकिन यह अनिवार्य नहीं है। अधिकांश Linux वितरणों में Docker Engine शामिल होता है, और Rancher Desktop जैसे अन्य इंटरफ़ेस भी काम करते हैं।

Nic Raboy

लेखक

Nic Raboy

निक रैबॉय MongoDB में डेवलपर रिलेशंस लीड हैं, जहाँ वे Python, Java, C# और PHP डेवलपर्स की एक टीम का नेतृत्व करते हैं जो ऐसा शानदार कंटेंट बनाते हैं जिससे डेवलपर्स अपने प्रोजेक्ट्स में MongoDB को सफलतापूर्वक शामिल कर सकें। उन्हें Golang और JavaScript का अनुभव है और वे प्रायः अपने विकास से जुड़ी अनेक यात्राओं के बारे में लिखते हैं।

विषय