Create and deploy a Node.js + Cloudant application
In this sample application, you will create a basic web application using Express to serve web pages in Node.js integrated complete with standard best practices, including a health check and application metric monitoring. In addition, this sample includes integration with Cloudant, a fully managed JSON document database.
You can access the cloud native microservice capabilities at the following endpoints:
- Health endpoint:
/health
Steps
You can deploy this application to IBM Cloud or build it locally by cloning this repo first. Once your app is live, you can access the /health endpoint to build out your cloud native application.
Deploying to IBM Cloud
Click Deploy to IBM Cloud to deploy this same application to IBM Cloud. This option creates a deployment pipeline, complete with a hosted GitLab project and a DevOps toolchain. You can deploy your app to Cloud Foundry, a Kubernetes cluster, or a Red Hat OpenShift cluster. OpenShift is available only through a standard cluster, which requires you to have a billable account.
IBM Cloud DevOps services provides toolchains as a set of tool integrations that support development, deployment, and operations tasks inside IBM Cloud.
Building locally
To get started building this application locally, you can either run the application natively or use the IBM Cloud Developer Tools for containerization and easy deployment to IBM Cloud.
Native application development
- Install the latest Node.js 12+ LTS version.
Once the Node toolchain has been installed, you can download the project dependencies with:
npm installTo run your application locally:
npm run startYour application will be running at http://localhost:3000. You can access the /health endpoint at the host. You can also verify the state of your locally running application using the Selenium UI test script included in the scripts directory.
IBM Cloud Developer Tools
Install IBM Cloud Developer Tools on your machine by running the following command:
curl -sL https://ibm.biz/idt-installer | bash
Create an application on IBM Cloud by running:
ibmcloud dev createThis will create and download a starter application with the necessary files needed for local development and deployment.
Your application will be compiled with Docker containers. To compile and run your app, run:
ibmcloud dev build
ibmcloud dev runThis will launch your application locally. When you are ready to deploy to IBM Cloud on Cloud Foundry or Kubernetes, run one of the following commands:
ibmcloud dev deploy -t buildpack // to Cloud Foundry
ibmcloud dev deploy -t container // to K8s clusterYou can build and debug your app locally with:
ibmcloud dev build --debug
ibmcloud dev debugTesting, linting, and code coverage
Running tests and code coverage
To run tests and code coverage, run npm run test. A coverage folder will be created with code coverage results that can be reviewed for gaps. The code coverage thresholds are also defined in package.json under nyc and can be adjusted if needed. Also, you can use the script npm run fix to automatically fix linting problems.
Pre-commit hooks
By default, a Husky pre-commit hook is defined in package.json, which runs linting, testing, and code coverage before the commit is made. If either the linting, testing, or code coverage fails, the pre-commit hook prevents the changes from being committed. Review the results and fix the problems, or modify the thresholds to allow the commit to succeed.
Next steps
- Learn more about augmenting your Node.js applications on IBM Cloud with the Node Programming Guide.
- Explore other sample applications on IBM Cloud.
License
This sample application is licensed under the Apache License, Version 2. Separate third-party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 and the Apache License, Version 2.