I just started exploring OpenShift Online 3 and it seems really awesome.
I'm trying to setup a simple HTTP server.
Here are my steps using CLI:
My current working folder consists of two files package.json and server.js.
Package.json
{
"name": "test",
"version": "0.0.1",
"description": "Node.js app for OpenShift 3",
"main": "server.js",
"dependencies": {
"express": "^4.13.4"
},
"engine": {
"node": "*",
"npm": "*"
},
"scripts": {
"start": "node server.js"
}
}
Server.js
const express = require('express')
const app = express()
const port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080
const ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0'
app.get('/', function (req, res) {
res.status(200).send({ message: 'OK' })
})
// error handling
app.use(function(err, req, res, next){
console.error(err.stack)
res.status(500).send('Something bad happened!')
})
app.listen(port, ip)
console.log('Server running on http://%s:%s', ip, port)
module.exports = app
Here's console output:
--> Creating resources ...
imagestream "olmeo-openshift" created
buildconfig "olmeo-openshift" created
deploymentconfig "olmeo-openshift" created
service "olmeo-openshift" created
--> Success
Build scheduled, use 'oc logs -f bc/olmeo-openshift' to track its progress.
Run 'oc status' to view your app.
After build is done web console shows an error:
Environment:
DEV_MODE=false
NODE_ENV=production
DEBUG_PORT=5858
Launching via npm...
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm ERR! Linux 3.10.0-693.12.1.el7.x86_64
npm ERR! argv "/opt/rh/rh-nodejs6/root/usr/bin/node" "/opt/rh/rh-nodejs6/root/usr/bin/npm" "run" "-d" "start"
npm ERR! node v6.11.3
npm ERR! npm v3.10.9
npm ERR! path /opt/app-root/src/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/opt/app-root/src/package.json'
npm ERR! enoent ENOENT: no such file or directory, open '/opt/app-root/src/package.json'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Please include the following file with any support request:
npm ERR! /opt/app-root/src/npm-debug.log
Apparently, package.json can't be found. What am I missing?
If you use:
oc new-app .
in a git workarea cloned off a remotely hosted Git repository, the build will be set up to pull files from the hosted Git repository. This means that if you make local changes and don't add/commit/push them to the hosted Git repository, then they will never be used.
If you want to work from a local directory and not use a hosted Git repository, you need to use a binary input build. To do that first run:
oc new-build --binary --image-stream nodejs --name olmeo-openshift
Then start a build by running:
oc start-build olmeo-openshift --from-dir=.
This will upload files from the local directory.
Once the first image has been built, then you can run:
oc new-app olmeo-openshift
to deploy the image, and:
oc expose svc/olmeo-openshift
to give it a public URL.
Each time you make code changes, run again:
oc start-build olmeo-openshift --from-dir=.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With