从github部署OpenShift Node.js应用程序

时间:2016-04-30 15:20:01

标签: javascript node.js git express openshift

我创建了一个node.js(带快速)应用程序,并且未能尝试从github部署到OpenShift。我正在尝试从Web界面部署(提供URL到github存储库根目录和分支/标记字段中的“master”)并且遇到错误我无法理解:

The initial build for the application failed: 
Shell command '/sbin/runuser -s /bin/sh 5724c3b42d5271363b000191 -c "exec /usr/bin/runcon 'unconfined_u:system_r:openshift_t:s0:c4,c687' /bin/sh -c \"gear postreceive --init >> /tmp/initial-build.log 2>&1\""' returned an error. rc=255 .
Last 10 kB of build output: Stopping NodeJS cartridge 
Repairing links for 1 deployments 
Building git ref 'master', commit a5ca0f7 
Building NodeJS cartridge Preparing build for deployment 
Deployment id is c2527992 
Activating deployment 
Starting NodeJS cartridge Sat Apr 30 2016 10:41:09 GMT-0400 (EDT): 
Starting application 'profile' ... 
Script = server.js 
Script Args = Node Options = !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! It is highly recommended that you add a package.json file to your application. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
Waiting for application port (8080) become available ... 
Application 'profile' failed to start (port 8080 not available) ------------------------- 
Git Post-Receive Result: failure 
Activation status: failure 
Activation failed for the following gears: 5724c3b42d5271363b000191 
(Error activating gear: CLIENT_ERROR: Failed to execute: 'control start' for /var/lib/openshift/5724c3b42d5271363b000191/nodejs #<IO:0x000000019b0298> #<IO:0x000000019b0220> ) 
Deployment completed with status: failure postreceive failed

我在上面阅读了一些关于port 8080 not availablefailed to execute control start之类错误的帖子,但我能够遵循的指令并没有解决我的问题。我发现“强烈推荐使用package.json文件”的行很奇怪,因为我有一个。我的package.json文件是:

{
  "name": "Portfolio_Memoria",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node server.js"
  },
  "main": "server.js",
  "description": "Portfolio_Memoria",
  "author": {
    "name": "gorra",
    "email": ""
  },
  "dependencies": {
    "express": "~4.9.0",
    "body-parser": "~1.8.1",
    "cookie-parser": "~1.3.3",
    "morgan": "~1.3.0",
    "serve-favicon": "~2.1.3",
    "debug": "~2.0.0",
    "jade": "~1.6.0",
    "stylus": "0.42.3"
  }
}

server.js文件是:

#!/usr/bin/env node
var debug = require('debug')('Portfolio_Memoria');
var app = require('./app');

if(typeof process.env.OPENSHIFT_NODEJS_PORT === 'undefined'){
    app.set('port', process.env.PORT || 3000); 

    var server = app.listen(app.get('port'), function() {
        debug('Express server listening on port ' + server.address().port);
    });
} else {
    app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 3000);
    app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

    var server = app.listen(app.get('port'), app.get('ip'), function() {
        debug('Express server listening on port ' + server.address().port);
    });
}

当然,应用程序在本地运行时没有问题。我不知道我在这里失踪了什么。

编辑: 我通过在OpenShift中创建一个空白应用程序来实现它,克隆存储库OpenShift通过命令行创建,将我的整个项目复制到它并推回它。但这是一种解决方法,而不是原始问题的解决方案。

0 个答案:

没有答案