gpt4 book ai didi

node.js - bluemix docker 容器绑定(bind)到 mongodb ('MongoError',消息 : 'connect ENETUNREACH' )

转载 作者:行者123 更新时间:2023-12-02 21:28:32 28 4
gpt4 key购买 nike

一直试图将我的 docker node.js 应用程序连接到 mongodb 服务无济于事。
我创建了一个自由桥接应用程序 ($BRIDGE_APP),没有绑定(bind)到 mongodb 服务的 war 或代码。它以良好的状态运行。
不得不说,相同的代码在我的本地 docker 容器中运行正常。我正在使用 mongoose 连接到 mongo。代码中唯一的区别是解析 mongo 连接字符串的方式:

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

然后我检查环境变量:
cf env $BRIDGE_APP
System-Provided:
{
"VCAP_SERVICES": {
"mongodb-2.4": [
{
"credentials": {.....

然后我运行我的容器并绑定(bind)一个 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 服务,但没有成功。

有没有人最终尝试过这种类型的设置,可以为我提供一些关于这里缺少什么的额外线索?

提前谢谢你

最佳答案

根据我的经验,IBM Containers 在启动时大约 5 秒内的网络不可靠。尝试将“sleep 10”添加到您的 CMD 或 ENTRYPOINT。或者将其设置为在放弃前重试 X 秒。

一旦网络出现,它对我来说是可靠的。但是容器生命的最初几秒钟在 DNS、绑定(bind)和传出流量方面遇到了麻烦。

我对 a similar question 给出了类似的回答最近。也许您的问题与其他海报的问题相同。

关于node.js - bluemix docker 容器绑定(bind)到 mongodb ('MongoError',消息 : 'connect ENETUNREACH' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817027/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com