如何在json上公开Openshift环境变量

时间:2015-03-13 23:20:28

标签: json openshift

我已经安装了node-push-server。配置是从json加载的,如下所示:

{
    "webPort": 8000,

    "mongodbUrl": "mongodb://username:password@localhost/database",

    "gcm": {
        "apiKey": "YOUR_API_KEY_HERE"
    },

    "apn": {
        "connection": {
            "gateway": "gateway.sandbox.push.apple.com",
            "cert": "/path/to/cert.pem",
            "key": "/path/to/key.pem"
        },
        "feedback": {
            "address": "feedback.sandbox.push.apple.com",
            "cert": "/path/to/cert.pem",
            "key": "/path/to/key.pem",
            "interval": 43200,
            "batchFeedback": true
        }
    }
}

如何在此json文件中为我的应用程序设置环境变量?

2 个答案:

答案 0 :(得分:2)

我认为不可能。您应该能够在代码中更改所有这些设置。例如,在节点中,您可以执行:process.env.OPENSHIFT_VARIABLENAME来读取环境变量。

来自docs的MongoDB连接字符串示例:

//provide a sensible default for local development
mongodb_connection_string = 'mongodb://127.0.0.1:27017/' + db_name;

//take advantage of openshift env vars when available:
if(process.env.OPENSHIFT_MONGODB_DB_URL){
    mongodb_connection_string = process.env.OPENSHIFT_MONGODB_DB_URL + db_name;
}

作为替代方案,有一种快速简便的可部署装置,称为AeroGear Push,可满足您的需求。

答案 1 :(得分:1)

配置文件可能很尴尬,因为在源代码库中包含它们并不总是一个好的举动。

OpenShift部署主要由git push驱动,因此有几个选项可帮助您正确解析服务器上的配置。

使用ENV vars配置服务是最常用的方法,但由于这需要平面文件,因此您需要找到一种方法来使用正确的值更新文件。

如果您知道需要哪些键和值,您应该能够编写更新示例json的脚本,或者合并两个json对象以生成包含字符node-pushserver期望的平面配置文件。

看起来mongodbUrlwebPort,(和domain?)需要填充OpenShift提供的值(如果可用)。 config-multipaas也许可以提供帮助。

我可能implement the config bootstrapping / merging work as a build step,允许您准备配置文件并以常规方式启动node-pushserver