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