मैं एक अजीब दुविधा में हूँ। मैंने एक नोड एप्लिकेशन बनाया है और इस एप्लिकेशन को MongoDB (डॉकर कंटेनर के माध्यम से) से कनेक्ट करने की आवश्यकता है मैंने एक docker-compose
फ़ाइल निम्नानुसार बनाई है:
version: "3"
services:
mongo:
image: mongo
expose:
- 27017
volumes:
- ./data/db:/data/db
my-node:
image: "<MY_IMAGE_PATH>:latest"
deploy:
replicas: 1
restart_policy:
condition: on-failure
working_dir: /opt/app
ports:
- "2000:2000"
volumes:
- ./mod:/usr/app
networks:
- webnet
command: "node app.js"
networks:
webnet:
मैं मोंगो आधिकारिक छवि का उपयोग कर रहा हूँ। मैंने उपरोक्त कॉन्फ़िगरेशन से अपनी डॉकटर छवि को छोड़ दिया है। मैंने कई कॉन्फ़िगरेशन के साथ सेट किया है, लेकिन मैं mongoDB से कनेक्ट करने में असमर्थ हूं (हां मैंने नोड.जेएस एप्लिकेशन के अंदर भी MongoDB
यूरी को बदल दिया है)। लेकिन जब भी मैं deploying
मेरा docker-compose
स्टार्ट अप पर मेरा आवेदन मुझे हमेशा TransientTransactionError
का MongoNetworkError
देता है। मैं कई घंटों से समझ नहीं पा रहा हूं कि समस्या कहां है।
एक और अजीब बात यह है कि जब मैं अपनी डॉकर-कंपोज़ फ़ाइल चलाता हूं तो मुझे निम्नलिखित लॉग मिलते हैं:
Creating network server_default
Creating network server_webnet
Creating service server_mongo
Creating service server_feed-grabber
क्या ऐसा हो सकता है कि दोनों सेवाएं एक अलग नेटवर्क में हों? यदि हाँ तो इसे कैसे ठीक करें?
अन्य सूचना:
- नोड.जेएस एप्लिकेशन में मैंने कोशिश की मोंगोडीबी यूरी है
mongodb://mongo:27017/MyDB
- मैं अपना docker-compose कमांड के साथ चला रहा हूँ:
docker stack deploy -c docker-compose.yml server
- मेरी नोड.जेएस छवि उबंटू 18 है
कोई इसमें मेरी मदद कर सकता है?
1 उत्तर
ठीक है तो मैंने कुछ चीजों की कोशिश की है और कई घंटे बिताने के बाद आखिरकार मुझे पता चला। दो चीजें थीं जो मैं गलत कर रहा था और वे मुझे आखिरी बिंदु पर मार रहे थे:
डॉकटर के स्टार्टअप की पहली लॉगिंग ने मुझे दिखाया कि यह दो नेटवर्क बना रहा था
server_default
औरserver_webnet
यह पहली गलती है। काम करते समय दोनों कंटेनर एक ही नेटवर्क में होने चाहिए।दूसरी चीज जो मुझे पहले मेरे Node.js एप्लिकेशन
depend_on
को चलाने के लिए Mongo कंटेनर को चलाने के लिए चाहिए थी। यह ठीक वैसा ही है जैसा मैंने अपने डॉकटर-कंपोज़ कॉन्फ़िगरेशन मेंdepend_on
प्रॉपर्टी को पेश करके किया था।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।