संपादित करें:
मैंने कभी स्प्रिंग-बूट विकास नहीं किया है, लेकिन आप जो त्रुटि कह रहे हैं वह प्रदर्शित किया जा रहा है वह मोंगो मुद्दे से बहुत अच्छी तरह से असंबंधित हो सकता है। हालांकि, यहां एक स्पष्टीकरण दिया गया है कि आपका मोंगो-कनेक्शन क्यों विफल हो रहा है:
docker-compose
एक वर्चुअल नेटवर्क बनाता है यदि कोई फ़ाइल में निर्दिष्ट नहीं किया गया है (जैसे आपके मामले में)।
आपके सभी एप्लिकेशन इस नेटवर्क के अंदर चलते हैं, एक दूसरे से पूरी तरह से अलग। जैसे, localhost
आपके स्प्रिंग-बूट कंटेनर में वास्तव में स्वयं को संदर्भित करता है। मतलब आपका स्प्रिंग-बूट एप्लिकेशन mongo
. की अपेक्षा कर रहा है उदाहरण इसके कंटेनर के अंदर चल रहा है (जो नहीं है, यह एक अलग कंटेनर में है)।
यह तब ठीक होता जब आपके लैपटॉप के नेटवर्क पर डेटाबेस और एप्लिकेशन दोनों चल रहे होते। लेकिन जैसा कि बताया गया है, वे अब docker-compose
. में चल रहे हैं नेटवर्क, पूर्ण अलगाव में।
हालांकि, docker-compose
वास्तव में चतुर है! यह आपके प्रत्येक कंटेनर के लिए एक DNS बनाता है जो सेवा-नाम का उपयोग करता है (आपके मामले में mongo
और spring
) आपके docker-compose
. में निर्दिष्ट है नेटवर्क के अंदर कंटेनरों तक आसान पहुंच की अनुमति देने के लिए फ़ाइल।
तो, आपको spring.data.mongodb.uri=mongodb://localhost:27017/db
बदलने में सक्षम होना चाहिए करने के लिए spring.data.mongodb.uri=mongodb://mongo:27017/db
और इसे कनेक्ट करने की अनुमति देनी चाहिए।