MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

dockerized mongo पर डेटा इनिशियलाइज़ करें

एक अधिक आत्मनिर्भर दृष्टिकोण:

  • जावास्क्रिप्ट फ़ाइलें बनाएं जो आपके डेटाबेस को प्रारंभ करें
  • एक व्युत्पन्न MongoDB डॉकर छवि बनाएं जिसमें ये फ़ाइलें हों

ऐसे कई उत्तर हैं जो डिस्पोजेबल कंटेनरों का उपयोग करते हैं या वॉल्यूम बनाते हैं और उन्हें लिंक करते हैं, लेकिन यह अत्यधिक जटिल लगता है। यदि आप mongo docker छवि की docker-entrypoint.sh पर एक नज़र डालते हैं, तो आप देखते हैं कि पंक्ति 206 /docker-entrypoint-initdb.d/*.js निष्पादित करती है। एक सिंटैक्स का उपयोग करके आरंभीकरण पर फ़ाइलें:mongo <db> <js-file> . यदि आप एक व्युत्पन्न MongoDB डॉकर छवि बनाते हैं जिसमें आपका बीज डेटा होता है, तो आप यह कर सकते हैं:

  • एक एकल डॉकर रन कमांड है जो बीज डेटा के साथ एक मोंगो खड़ा करता है
  • डेटा को कंटेनर स्टॉप और प्रारंभ के माध्यम से जारी रखा जाता है
  • डॉकर स्टॉप, आरएम और रन कमांड के साथ उस डेटा को रीसेट करें
  • k8s, mesos, झुंड, रैंचर जैसे रनटाइम शेड्यूलर के साथ आसानी से परिनियोजित करें

यह दृष्टिकोण विशेष रूप से इसके लिए उपयुक्त है:

  • POCs जिन्हें प्रदर्शित करने के लिए बस कुछ वास्तविक डेटा की आवश्यकता होती है
  • CI/CD पाइपलाइन जिन्हें ब्लैक बॉक्स परीक्षण के लिए लगातार डेटा की आवश्यकता होती है
  • उत्पाद डेमो (बिक्री इंजीनियर, उत्पाद स्वामी) के लिए उदाहरण परिनियोजन

कैसे करें:

  1. अपनी आरंभीकरण स्क्रिप्ट बनाएं और परीक्षण करें (जैसा उपयुक्त हो डेटा तैयार करना)
  2. अपनी व्युत्पन्न छवि के लिए एक डॉकरफाइल बनाएं जो आपकी इनिट स्क्रिप्ट को कॉपी करे

    FROM mongo:3.4
    COPY seed-data.js /docker-entrypoint-initdb.d/
    
  3. अपनी डॉकटर छवि बनाएं

    docker build -t mongo-sample-data:3.4 .
    
  4. वैकल्पिक रूप से, अपनी छवि को अन्य लोगों के उपयोग के लिए डॉकटर रजिस्ट्री में धकेलें

  5. अपनी डॉकटर छवि चलाएँ

    docker run                               \
        --name mongo-sample-data             \
        -p 27017:27017                       \
        --restart=always                     \
        -e MONGO_INITDB_DATABASE=application \
        -d mongo-sample-data:3.4
    

डिफ़ॉल्ट रूप से, docker-entrypoint.sh आपकी स्क्रिप्ट को test . पर लागू करेगा डीबी; उपरोक्त रन कमांड env var MONGO_INITDB_DATABASE=application इन लिपियों को application पर लागू करेगा इसके बजाय डीबी। वैकल्पिक रूप से, आप js फ़ाइल में अलग-अलग dbs बना और स्विच कर सकते हैं।

मेरे पास एक जीथब रेपो है जो बस यही करता है - यहां प्रासंगिक फाइलें हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $concatArrays

  2. मोंगोडब सी # ड्राइवर के साथ पीओसीओ का उपयोग करते समय _आईडी फ़ील्ड का प्रबंधन कैसे करें?

  3. मोंगोडब को अलग रिकॉर्ड मिलते हैं

  4. मोंगोडब:शो डीबीएस मेरे डेटाबेस क्यों नहीं दिखाता है?

  5. जावा, मोंगोडीबी:एक विशाल संग्रह को पुनरावृत्त करते समय प्रत्येक ऑब्जेक्ट को कैसे अपडेट करें?