This project shows how to deploy new and existing Express.js applications to OpenWhisk. This tutorial takes less then 5 minutes to complete.
- Apache OpenWhisk
- node.js
- IBM Cloud account
- Create new Express.js application
- Change relative paths
- Create OpenWhisk action
- Deploy application
- Test application
Open a terminal, and type
$ npm install express-generator -g
$ express --view=pug myexpressapp
$ cd myexpressapp
$ npm install This creates a minimal Express.js application.
To check it is working, start the application by typing the command
npm start and load http://localhost:3000 in a browser.
The generated Express.js application expects resources to be installed in the domain root folder but by default Apache OpenWhisk web actions are served from a sub-directory.
Change views/layout.pug:
doctype html
html
head
title= title
if baseurl
base(href=baseurl)
link(rel='stylesheet', href='stylesheets/style.css')
body
block contentAdd expressjs-openwhisk module dependency in your project.
$ npm install expressjs-openwhisk --saveThen create the Apache OpenWhisk action handling Web requests by forwarding
them to expressjs-openwhisk. Create a file named action.js with this content:
const app = require('./app');
const forward = require('expressjs-openwhisk')(app);
function main(request) {
return forward(request);
}
exports.main = main;
In package.json, add the following entry:
{
"main": "action.js",
...
}To deploy the application and dependencies on IBM Cloud, do:
$ zip -r app.zip .
$ wsk action update express app.zip --kind nodejs:6 --web raw \
-p baseurl https://openwhisk.ng.bluemix.net/api/v1/web/<org>_<space>/default/express/Replace <org> and <space> by your IBM Cloud organization and space, respectively.
And finally test the application by opening
https://openwhisk.ng.bluemix.net/api/v1/web/<org>_<space>/default/express
in a browser