Joe Lennon

Deploying a Node.js app to IBM BlueMix

Introduction

user

Joe Lennon

Joe is CTO @ ePubDirect in Cork, Ireland. He is the author of HTML5 in Action and Beginning CouchDB, and is a regular contributor to IBM developerWorks.


Deploying a Node.js app to IBM BlueMix

Posted by Joe Lennon on .
Featured

Deploying a Node.js app to IBM BlueMix

Posted by Joe Lennon on .

featureimage

In this article, you will learn how to build a simple Node.js application and deploy it to IBM's BlueMix platform. BlueMix makes it easy to deploy your apps into production, and provides a variety of services that simplify common tasks such as data storage, caching, mobile services and more.

This article covers:

  • Building a Node.js app locally
  • Creating a BlueMix application
  • Deploying the app

Building a Node.js app locally

We're going to build a really basic Hello, World type app. You'll need to have Node.js installed on your machine - so if you haven't done so already, head over to http://nodejs.org/ and follow the guidelines there to get set up. If you are a Mac user and have Homebrew installed you can install it using the following command:

  brew install node

Once you have Node installed, you can check that it's working using the following command:

  node -v

You should see a response such as (the version number isn't important, the main thing is that you don't get an error):

  v0.10.26

To build the app, we'll use the Express.js framework and a command-line generator that makes it simple to create a new Express-based project.

  npm install express -g
  npm install express-generator -g

If you are running on Mac or Linux you will probably need to prefix the above commands with sudo.

Next, let's generate an Express app.

  express bmtestapp

This will create a new directory named bmtestapp. Next, we'll change to that directory and install the npm dependencies needed for Express to work.

  cd bmtestapp
  npm install

Finally, we'll run the app locally:

  npm start

You should see the following output:

  > [email protected] start /Users/jlennon/Projects/bmtestapp
  > node ./bin/www

You can now run your app by navigating to http://localhost:3000 in your Web browser. You should see a screen that looks like the screenshot below.

express-screenshot

Creating a BlueMix application

Now that we have the app running locally, let's get it deployed to BlueMix. You'll need to go to the BlueMix website and sign up for the Beta to create a BlueMix application.

BlueMix is built on the CloudFoundry platform, and to work with it from the command line you can use the CloudFoundry CLI tools - download the relevant installer for your platform. Again, if you're using a Mac, you can easily install it with Homebrew:

  brew install cloudfoundry-cli

When the tools are installed, you can check that they are working correctly using the following command:

  cf -v

You should see a response like (again, the version isn't too important here):

  cf version 6.1.0-homebrew

Next, tell the cf tool where the BlueMix API can be found (you'll only need to do this the first time you use cf):

  cf api https://api.ng.bluemix.net

Now, login to BlueMix using the credentials you used to sign up for the Beta:

  cf login

Your username is your email address.

Deploying the app

Now that you have the cf tool configured and you have logged into BlueMix, deploying your app is really easy.

  cf push jl-bmtestapp

The jl-bmtestapp in the command above is a unique name for your app on BlueMix - make sure you change it to something else. This will form part of the URL for your app.

This will create a new application on BlueMix, upload your code and download any dependencies, and start your app. You should see the URL for your app in the output - the URL for my app is http://jl-bmtestapp.ng.bluemix.net. Copy the URL for your own app and run it in your Web browser. You should see your Express app again, but this time it's running on the cloud via BlueMix.

Anytime you make changes to your app, simply run the above command again to update and re-deploy your app.

In future articles I will talk about how to use BlueMix services in your apps and integrate with a Git repository so you can auto-deploy your app every time you push changes to Git.

user

Joe Lennon

http://joelennon.com

Joe is CTO @ ePubDirect in Cork, Ireland. He is the author of HTML5 in Action and Beginning CouchDB, and is a regular contributor to IBM developerWorks.