bluemix docker容器绑定到mongodb('MongoError',消息:'connect ENETUNREACH')

一直在尝试将我的docker node.js应用程序连接到一个mongodb服务无济于事。 我创build了一个自由桥接应用程序($ BRIDGE_APP),没有任何战争或代码绑定到一个mongodb服务。 它运行状态良好。 不得不说,相同的代码在我的本地泊坞窗容器中正确运行。 我使用mongoose来连接到mongo。代码的唯一区别是解决mongo连接string的方式:

var DB_CONNECT_STRING = 'mongodb://app:password@127.0.0.1:27017/appname'; if(custom.areWeOnBluemix() && custom.doWeHaveServices()) DB_CONNECT_STRING = custom.getMongoConnectString(); ... console.log('going to connect to mongo@: ' + DB_CONNECT_STRING); var db = mongoose.createConnection(DB_CONNECT_STRING); db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function (callback) { console.log('... db open !!!'); }); 

我把我的形象推到bluemix没有问题:

 ice --local push $REGISTRY/$ORG/$CONTAINER_NAME 

然后我检查envvariables:

 cf env $BRIDGE_APP System-Provided: { "VCAP_SERVICES": { "mongodb-2.4": [ { "credentials": {..... 

然后我运行我的容器并绑定一个IP:

 ice run --bind $BRIDGE_APP --name $CONTAINER_NAME -p $PORT $REGISTRY/$ORG/$CONTAINER_NAME:latest sleep 12 ice ip bind $IP $CONTAINER_NAME 

…这几乎完全是由本书,但由于某种原因,当我检查日志,我总是得到:

 ice logs $CONTAINER_NAME ... going to connect to mongo@: mongodb://c61deb58-45ea-41.... Example app listening at http://0.0.0.0:8080 connection error: { [MongoError: connect ENETUNREACH] name: 'MongoError', message: 'connect ENETUNREACH' } 

我也尝试了与mongolab服务没有成功。

有没有人最终尝试这种types的设置,可以提供一些额外的线索,什么是在这里失踪?

事先感谢你

在我的经验中,在启动时大约5秒钟,IBM Containers中的networking不可靠。 尝试添加一个“睡眠10”到您的CMD或入口点。 或者在放弃之前将其设置为重试X秒。

一旦networking出现,对我来说是可靠的。 但是,容器生命的头几秒钟就遇到了DNS,绑定和出站stream量的麻烦。

我最近也对类似的问题作了类似的回答。 也许你的问题和其他海报一样。