2015-10-26 13 views
9

मैं के साथ ओएस एक्स पर डोकर चल रहा हूँ से डोकर कंटेनर मोंगो से कनेक्ट:मेजबान

docker run --name mongo -p 27017:27017 -v ./data/db:/data/db -d mongo mongod 

और आईपी मैं से मिल का उपयोग करते हुए:

में
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <cid> 

:

var MongoClient = require('mongodb').MongoClient; 
var assert = require('assert'); 
var url = 'mongodb://<ip>:27017'; 

MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    db.close(); 
}); 

और मुझे एक समय समाप्त त्रुटि मिल रही है।

मैं डॉकर हब से आधिकारिक मोंगो रिपोजिटरी का उपयोग कर रहा हूं। क्या मेजबान से कनेक्ट करने के लिए मुझे कोई अतिरिक्त सेटअप करने की ज़रूरत है?

उत्तर

20

क्या node.js कोड किसी कंटेनर से या मेजबान से चलाया जा रहा है?

यदि यह मेजबान पर है, बस स्थानीय होस्ट पता अर्थात का उपयोग करें:

var url = 'mongodb://localhost:27017'; 

क्योंकि आप -p 27017:27017 साथ बंदरगाह प्रकाशित यह काम करेंगे। तब

var url = 'mongodb://mongo:27017'; 

जब आप नोड के साथ कंटेनर का शुभारंभ:

कोड एक कंटेनर के अंदर चल रहा है, यह सबसे अच्छा होगा लिंक्स और नाम जैसे द्वारा मोंगो कंटेनर की चर्चा करते हुए उपयोग करने के लिए यह पुनर्लेखन के लिए।

docker run -d --link mongo:mongo my_container 

डोकर तो कंटेनर के अंदर /etc/hosts के लिए कोई प्रविष्टि जोड़ देगा ताकि नाम mongo मोंगो कंटेनर के आईपी पर ले कर जाता: js कोड, तुम बस की तरह कुछ कर सकते हैं।

+0

को निर्दिष्ट मैं इसे मेजबान से चल रहा हूँ बिना यह लेने के लिए सक्षम होना चाहिए। जब मैं इसे स्थानीयहोस्ट में बदलता हूं तो मुझे कनेक्शन से इनकार कर दिया जाता है। – ggeise

+0

क्या आप वाकई मोंगो कंटेनर अभी भी चल रहे हैं? 'डॉकर पीएस' में एक नज़र डालें। मैंने अभी परीक्षण किया और यह मेरे लिए जर्नल त्रुटि के साथ तुरंत दुर्घटनाग्रस्त हो गया - मुझे इसे शुरू करने के लिए '--smallfiles 'तर्क पारित करना पड़ा। –

+0

हाँ, यह मेरे लिए रह रहा है। मैंने अपने प्रोग्राम को एक कंटेनर के अंदर डालने की कोशिश की और यह लिंक सिंटैक्स के साथ बस जुड़ा हुआ है। – ggeise

0

आप एक उपयोगकर्ता परिभाषित नेटवर्क का उपयोग करते हैं तो आप को जोड़ने या 27017

const MONGO_NAME_STR = "mongodb://" + "your_docker_container_name"; 
var db = {}; 

mongo_client.connect(MONGO_NAME_STR, function(err, _db){ 
    //some err handling 
    db = _db; 
});