समस्या
आप गलत आईपी/होस्टनाम के साथ डीबी तक पहुंचने का प्रयास कर रहे हैं। जैसा कि आप देख सकते हैं, 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