Openshift无法使用node.js最新的盒式磁带通过Openshift UI创建node.js应用程序。它在创建时失败并出现以下错误:
启动Node.js应用程序...... 应用程序的初始构建失败:Shell命令'/ sbin / runuser -s / bin / sh 57eae88f7628e1677c000077 -c“exec / usr / bin / runcon'unconfined_u:system_r:openshift_t:s0:c4,c966'/ bin / sh -c \“gear postreceive --init>> /tmp/initial-build.log 2>& 1 \“”'返回错误。 RC = 255
日志的尾部说:
准备部署构建
部署ID为b941b282
激活部署
Git收到后结果:失败
激活状态:失败
以下档位的激活失败:
57eae88f7628e1677c000077(激活齿轮时出错:CLIENT_ERROR:失败 执行:'control start'为
的/ var / lib中/ openshift / 57eae88f7628e1677c000077 /的NodeJS
部署已完成,状态为:失败
收到失败后
我不知道如何调试它。我有一个package.json
,它有一个“main”指向我的app.js
,而我的app.js
正在使用环境变量来设置ip / port。它在常规npm install && npm start
本地工作。这是一个带有节点0.10盒的工作应用程序。
答案 0 :(得分:0)
节点6.6与0.10的差异很大。您应该使用最新的节点或新的“盒式磁带”正在使用的节点在本地工作。
另请查看build.log
答案 1 :(得分:0)
所以我想出来了,我想我会提供解决方案以防其他任何人遇到它。因此,Openshift站点上的节点最新盒式磁带是社区提供的,因此它与普通的node-0.10盒式磁带有一些重要区别。我遇到了三件特别的事情:
要求您的应用程序公开GET /health
端点,返回200 OK,请参阅:https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L14。
它为ip和port NODE_IP
和NODE_PORT
使用不同的环境变量。我不确定正常的开放式班次环境变量是否也有效,因为我从未回过头来试过它。但示例模板至少使用备用环境变量。请参阅https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L41。
它希望您在package.json
中有一个启动脚本,但它实际上并没有运行npm start
,它会模仿它。因此,您希望使用npm start
命令工作的某些内容在此处不起作用。例如,我的启动命令为NODE_ENV=development node app.js
,如果通过npm start
运行,但在通过自定义控制脚本运行时根本无法运行,请参阅https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/bin/control#L47。