Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Node.js/Mongo应用程序从Redhat Openshift2升级到Openshift3,什么';mongodb URI是什么?_Javascript_Node.js_Mongodb_Openshift - Fatal编程技术网

Javascript 将Node.js/Mongo应用程序从Redhat Openshift2升级到Openshift3,什么';mongodb URI是什么?

Javascript 将Node.js/Mongo应用程序从Redhat Openshift2升级到Openshift3,什么';mongodb URI是什么?,javascript,node.js,mongodb,openshift,Javascript,Node.js,Mongodb,Openshift,我想我已经在我的Openshift3“Starter”帐户上成功安装了node.js和mongoDB 在Openshift2中,曾经有一个完整的MONGODB URL环境变量。现在似乎只有一个用户和密码变量。如何知道服务器、端口等?创建pod时,pod中项目/命名空间中所有服务的OpenShift(Kubernetes)集。环境变量以其相应的服务名称作为前缀(服务名称转换为大写,破折号替换为下划线): {SERVICE_NAME}{u SERVICE_HOST {服务名称}服务端口 您的No

我想我已经在我的Openshift3“Starter”帐户上成功安装了node.js和mongoDB

在Openshift2中,曾经有一个完整的MONGODB URL环境变量。现在似乎只有一个用户和密码变量。如何知道服务器、端口等?

创建pod时,pod中项目/命名空间中所有服务的OpenShift(Kubernetes)集。环境变量以其相应的服务名称作为前缀(服务名称转换为大写,破折号替换为下划线):

  • {SERVICE_NAME}{u SERVICE_HOST
  • {服务名称}服务端口
您的Node.js应用程序仍然需要知道您在MongoDB数据库服务中命名了什么以及数据库的用户名/密码,因此您需要在Node.js部署配置中设置这些环境变量

假设您命名了Node.js服务
nodejs ex
、数据库服务
mongodb
、数据库
sampledb
、用户名
user
和密码
pass

$ oc set env dc/nodejs-ex DATABASE_SERVICE_NAME=mongodb \
    MONGODB_DATABASE=sampledb \
    MONGODB_PASSWORD=pass \ 
    MONGODB_USER=user
并且,在您的应用程序中的某个位置(基于):

if(进程环境数据库服务名称){
var mongoServiceName=process.env.DATABASE_SERVICE_NAME.toUpperCase(),
mongoHost=process.env[mongoServiceName+'\u服务\主机'],
mongoPort=process.env[mongoServiceName+'\\服务\端口'],
mongoDatabase=process.env[mongoServiceName+'\\数据库'],
mongoPassword=process.env[mongoServiceName+'\u PASSWORD']
mongoUser=process.env[mongoServiceName+''u USER'];
if(mongoHost和mongoPort和mongoDatabase){
mongoURL='mongodb://';
if(mongoUser和mongoPassword){
mongoURL+=mongoUser+':'+mongoPassword+'@';
}
mongoURL+=mongoHost+':'+mongoPort+'/'+mongoDatabase;
}
}

可能是吗?@Chris G谢谢,但是因为那篇文章提到的是
rhc
命令行界面,而不是新的
oc
界面,我相信这些是旧的v2环境变量。谢谢。我看到了冗长混乱的演示代码,我的回答是“WTF”,我希望(并且仍然希望)更简单的东西。。。好的一面是,我想这是一个编写一个小型NPM模块的机会。而且,如果我想从mongo CLI进行连接,这也没有帮助。你说的简单一点是什么意思?将服务名称传递给应用程序,您就可以通过两个环境变量进行访问。另外,您试图从何处连接到mongo cli?更简单的版本:
$oc set env dc/nodejs ex MONGODB_URI=MONGODB://{username}:{password}@{database_service_name}:27017/{database}
。您不需要知道数据库服务的IP。每个服务都有一个DNS名称(DNS名称=服务名称)。您可以使用DNS名称引用命名空间/项目中的服务。此外,如果您试图访问MongoDB CLI,只需将
oc rsh
插入MongoDB pod并运行:
mongo 127.0.0.1:27017/$MongoDB_数据库-u$MongoDB_用户-p$MongoDB_密码