Openshift 3缺少Openshift_DATA_DIR环境变量(node.js)

Openshift 3缺少Openshift_DATA_DIR环境变量(node.js),node.js,openshift,Node.js,Openshift,我正在openshift上运行node.js应用程序,我想添加一个存储卷 使用唯一的UI,我已经创建了一个持久卷声明,并使用“添加存储”按钮将该卷添加到我的部署下 由于我的应用程序依赖于对该存储的访问,因此我的node.js代码中包含以下内容: if (!('OPENSHIFT_DATA_DIR' in process.env)) { console.log(process.env); throw new Error('Can\'t access data directory')

我正在openshift上运行node.js应用程序,我想添加一个存储卷

使用唯一的UI,我已经创建了一个持久卷声明,并使用“添加存储”按钮将该卷添加到我的部署下

由于我的应用程序依赖于对该存储的访问,因此我的node.js代码中包含以下内容:

if (!('OPENSHIFT_DATA_DIR' in process.env)) {
    console.log(process.env);
    throw new Error('Can\'t access data directory');
}
此错误在部署时抛出,并且在查看
console.log(process.env)
的输出时,似乎没有任何环境变量描述持久存储的路径


如何获取
process.env.OPENSHIFT\u DATA\u DIR
的值?

您可以在部署配置中设置环境变量,为其提供将持久卷装入容器的路径。或者只是将路径编码到应用程序代码中

这假定您确实将持久卷装入了容器中。仅仅提出声明是不够的,它还需要与应用程序相关联


还要记住,如果使用OpenShift Online,当前的存储类型只能用于非扩展应用程序,并且不能使用滚动部署。所以,请确保将部署的部署策略从
滚动
更改为
重新创建
,并且不要扩展应用程序。

为了手动添加变量,如何计算持久卷的路径名?我的容器在UI中列出了两条可能有用的信息;我看到
Mount:volume-vaymu-->/appstate
,以及
声明名称:appstorage
。您已在
/appstate
安装了持久卷。所以运行
oc set env dc/yourappname OPENSHIFT\u DATA\u DIR=/appstate