我想我已经在我的 Openshift3“Starter”帐户上成功安装了 node.js 和 mongoDB。
在 Openshift2 中曾经有一个完整的 MONGODB URL 环境变量。现在似乎只有一个 USER 和 PASSWORD 变量。我如何知道服务器、端口等???
最佳答案
OpenShift (Kubernetes) 设置 environment variables创建 pod 时,适用于 pod 中的项目/命名空间中的所有服务。环境变量以相应的服务名称为前缀(服务名称转换为大写,破折号替换为下划线):
- {SERVICE_NAME}_SERVICE_HOST
- {SERVICE_NAME}_SERVICE_PORT
您的 Node.js 应用程序仍然需要知道您为 MongoDB 数据库服务命名的内容以及数据库的用户名/密码,因此您需要在 Node.js 部署配置中的环境变量中设置这些内容。
假设您将 Node.js 服务命名为 nodejs-ex
、数据库服务 mongodb
、数据库 sampledb
、用户名 用户
和密码pass
:
$ oc set env dc/nodejs-ex DATABASE_SERVICE_NAME=mongodb \
MONGODB_DATABASE=sampledb \
MONGODB_PASSWORD=pass \
MONGODB_USER=user
并且,在您的应用程序中的某个位置(基于 Node.js sample app ):
if (process.env.DATABASE_SERVICE_NAME) {
var mongoServiceName = process.env.DATABASE_SERVICE_NAME.toUpperCase(),
mongoHost = process.env[mongoServiceName + '_SERVICE_HOST'],
mongoPort = process.env[mongoServiceName + '_SERVICE_PORT'],
mongoDatabase = process.env[mongoServiceName + '_DATABASE'],
mongoPassword = process.env[mongoServiceName + '_PASSWORD']
mongoUser = process.env[mongoServiceName + '_USER'];
if (mongoHost && mongoPort && mongoDatabase) {
mongoURL = 'mongodb://';
if (mongoUser && mongoPassword) {
mongoURL += mongoUser + ':' + mongoPassword + '@';
}
mongoURL += mongoHost + ':' + mongoPort + '/' + mongoDatabase;
}
}
关于javascript - 将 Node.js/Mongo 应用程序从 Redhat Openshift2 升级到 Openshift3,mongodb URI 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46062044/