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量的麻烦。
我最近也对类似的问题作了类似的回答。 也许你的问题和其他海报一样。
- docker + elasticsearch:创build日志文件时访问被拒绝
- 对docker api使用/ container / id / top命令
- 克隆一个elasticsearch docker
- Arquillian Cube REST-Assured集成testing
- 智能堆栈+ Docker
- 在Docker中安装Jenkins插件(mercurial)显示在插件文件夹中,但不在Jenkins本身中
- Docker容器更新在Windows Server 2016上失败
- 如何访问从networking上的docker集装箱本地主机上运行的Web服务器?
- 自动化dockerbuild设运行错误:无法find图像