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

डोकर में मोंगोडब को स्प्रिंगबूट कंटेनर से कनेक्ट नहीं कर सकता

समस्या

आप गलत आईपी/होस्टनाम के साथ डीबी तक पहुंचने का प्रयास कर रहे हैं। जैसा कि आप देख सकते हैं, localhost तक पहुंचना वसंत कंटेनर में उस कंटेनर का समाधान होगा और कोई 27017 . नहीं है बंदरगाह वहाँ सुन रहा है। जब आप डॉकर होस्ट पर जार चलाते हैं, तो इसमें 27017 होता है पोर्ट उपलब्ध है, इसलिए यह काम करता है।

समाधान

आप --hostname . का उपयोग कर सकते हैं docker run में ध्वजारोहण करें डीबी कंटेनर का होस्टनाम सेट करने के लिए कमांड ताकि आप होस्टनाम का उपयोग करके स्प्रिंग कंटेनर से इसे कनेक्ट कर सकें।

हालांकि, बेहतर उपाय यह है कि डॉकर-कंपोज़ फ़ाइल का उपयोग करें और docker-compose up का उपयोग करके कंटेनरों को प्रारंभ करें। .

सबसे पहले इस्तेमाल करें

MongoClient mongo = new MongoClient("db", 27017));

अपने स्प्रिंग कोड में और अपने कोड की एक छवि बनाएं।

बाद में, कंटेनर शुरू करने के लिए नीचे दिए गए चरणों का पालन करें:

A) कंपोज़ फ़ाइल बनाएं

docker-compose.yml . नाम की एक फाइल बनाएं निम्नलिखित सामग्री के साथ:

version: "2.1"
services:
  app:
    # replace imageName with your image name (block in your case)
    image: imageName:tag
    ports:
      - 9876:4000 # Replace the port of your application here if used
    depends_on: 
      - db
  db:
    image: mongo
    volumes:
      - ./database:/data
    ports:
      - "27017:27017"   

B) कंपोज़ फ़ाइल चलाएँ

कंपोज़ फ़ाइल चलाने के लिए निम्न कमांड निष्पादित करें:docker-compose up -d




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पाइमोंगो से कच्चे मोंगोडब कमांड कैसे चलाएं

  2. MongoDB - GridFS का उपयोग करके अधिकतम फ़ाइल आकार

  3. मोनो ऑब्जेक्ट पर ब्लॉक () करते समय अपवाद प्राप्त करना मैं ReactiveMongoRepository ऑब्जेक्ट से वापस आ गया

  4. मोंगोडीबी स्वचालित रूप से डेटा रीफ्रेश नहीं करता है?

  5. MongoDB:मौजूदा फ़ील्ड के अनुसार क्रमबद्ध करें और फिर वर्णानुक्रम में