1

I created a node.js (with express) application and have been unsucessfully trying to deploy to OpenShift from github. I am attempting to deploy from the web interface (providing the URL to the github repository root and "master" in the branch/tag field) and am getting an error I'm having trouble understanding:

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

I read a couple of posts about some errors above like port 8080 not available and failed to execute control start but the directives I was able to follow did not solve my issue. I am finding the line that says "using a package.json file is highly recommended" strange as I do have one. My package.json file is:

{
  "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"
  }
}

And server.js file is:

#!/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);
    });
}

Of course, the application runs without issue locally. I don't know what I am missing here.

EDIT: I got it to work by creating a blank application in OpenShift, cloning the repository OpenShift creates via command line, copying my whole project to it and pushing it back. This is a workaround and not a solution to the original problem, though.

Community
  • 1
  • 1
YuriW
  • 869
  • 1
  • 11
  • 22

0 Answers0