Chapter 2. Developing and deploying a Node.js application You can create new Node.js applications and deploy them to OpenShift. 2.1. Developing a Node.js application For a basic Node.js application, you must create a JavaScript file containing Node.js methods. Prerequisites npm installed. Procedure Create a new directory myApp , and navigate to it. USD mkdir myApp USD cd MyApp This is the root directory for the application. Initialize your application with npm . The rest of this example assumes the entry point is app.js , which you are prompted to set when running npm init . USD cd myApp USD npm init Create the entry point in a new file called app.js . Example app.js const http = require('http'); const server = http.createServer((request, response) => { response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); const greeting = {content: 'Hello, World!'}; response.write(JSON.stringify(greeting)); response.end(); }); server.listen(8080, () => { console.log('Server running at http://localhost:8080'); }); Start your application. USD node app.js Server running at http://localhost:8080 Using curl or your browser, verify your application is running at http://localhost:8080 . USD curl http://localhost:8080 {"content":"Hello, World!"} Additional information The Node.js runtime provides the core Node.js API which is documented in the Node.js API documentation . 2.2. Deploying a Node.js application to Openshift To deploy your Node.js application to OpenShift, add nodeshift to the application, configure the package.json file and then deploy using nodeshift . 2.2.1. Preparing Node.js application for OpenShift deployment To prepare a Node.js application for OpenShift deployment, you must perform the following steps: Add nodeshift to the application. Add openshift and start entries to the package.json file. Prerequisites npm installed. Procedure Add nodeshift to your application. USD npm install nodeshift --save-dev Add the openshift and start entries to the scripts section in package.json . { "name": "myApp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "openshift": "nodeshift --expose --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12", "start": "node app.js", ... } ... } The openshift script uses nodeshift to deploy the application to OpenShift. Note Universal base images and RHEL images are available for Node.js. See the Node.js release notes for more information on image names. Optional : Add a files section in package.json . { "name": "myApp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { ... }, "files": [ "package.json", "app.js" ] ... } The files section tells nodeshift what files and directories to include when deploying to OpenShift. nodeshift uses the node-tar module to create a tar file based on the files and directories you list in the files section. This tar file is used when nodeshift deploys your application to OpenShift. If the files section is not specified, nodeshift will send the entire current directory, excluding: node_modules/ .git/ tmp/ It is recommended that you include a files section in package.json to avoid including unnecessary files when deploying to OpenShift. 2.2.2. Deploying a Node.js application to OpenShift You can deploy a Node.js application to OpenShift using nodeshift . Prerequisites The oc CLI client installed. npm installed. Ensure all the ports used by your application are correctly exposed when configuring your routes. Procedure Log in to your OpenShift instance with the oc client. USD oc login ... Use nodeshift to deploy the application to OpenShift. USD npm run openshift 2.3. Deploying a Node.js application to stand-alone Red Hat Enterprise Linux You can deploy a Node.js application to stand-alone Red Hat Enterprise Linux using npm . Prerequisites A Node.js application. npm 6.14.8 installed RHEL 7 or RHEL 8 installed. Node.js installed Procedure If you have specified additional dependencies in the package.json file of your project, ensure that you install them before running your applications. USD npm install Deploy the application from the application's root directory. USD node app.js Server running at http://localhost:8080 Verification steps Use curl or your browser to verify your application is running at http://localhost:8080 USD curl http://localhost:8080

Commands:
mkdir myApp cd MyApp
cd myApp npm init
const http = require('http'); const server = http.createServer((request, response) => { response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); const greeting = {content: 'Hello, World!'}; response.write(JSON.stringify(greeting)); response.end(); }); server.listen(8080, () => { console.log('Server running at http://localhost:8080'); });
node app.js Server running at http://localhost:8080
curl http://localhost:8080 {"content":"Hello, World!"}
npm install nodeshift --save-dev
{ "name": "myApp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "openshift": "nodeshift --expose --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12", "start": "node app.js", } }
{ "name": "myApp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { }, "files": [ "package.json", "app.js" ] }
oc login
npm run openshift
npm install
node app.js Server running at http://localhost:8080
curl http://localhost:8080