创建node.js最新盒式磁带的Openshift错误

时间:2016-09-27 22:47:16

标签: node.js openshift

Openshift无法使用node.js最新的盒式磁带通过Openshift UI创建node.js应用程序。它在创建时失败并出现以下错误:

  

启动Node.js应用程序......   应用程序的初始构建失败:Shell命令'/ sbin / runuser -s / bin / sh 57eae88f7628e1677c000077 -c“exec   / usr / bin / runco​​n'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盒的工作应用程序。

2 个答案:

答案 0 :(得分:0)

节点6.6与0.10的差异很大。您应该使用最新的节点或新的“盒式磁带”正在使用的节点在本地工作。

另请查看build.log

答案 1 :(得分:0)

所以我想出来了,我想我会提供解决方案以防其他任何人遇到它。因此,Openshift站点上的节点最新盒式磁带是社区提供的,因此它与普通的node-0.10盒式磁带有一些重要区别。我遇到了三件特别的事情:

  1. 要求您的应用程序公开GET /health端点,返回200 OK,请参阅:https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L14

  2. 它为ip和port NODE_IPNODE_PORT使用不同的环境变量。我不确定正常的开放式班次环境变量是否也有效,因为我从未回过头来试过它。但示例模板至少使用备用环境变量。请参阅https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L41

  3. 它希望您在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

    < / LI>