Docker Integration With Node.js REST API

What is a Container?

Container is a good way to create a package of applications along with all its dependencies so the application can be transferred between environments and also, it should run without any changes. Container is basically the process of isolating the application from other applications or from the outer world. Docker provides us a set of tools to use the Container. In this article, we will try to understand how to install and run a Docker container on a local machine.

What is Docker?

Docker is a platform for developers to develop, deploy, and run applications with containers. We can easily set up the environment, install the required software, and then run our application. There is a lot of time required to set up the environment before starting the application.

Containers and virtual machines

Containers are very lightweight virtual machines but some differences are there. Please find them explained below.
Virtual Machine
Container is running on Linux and also sharing the kernel of the host machine
VM or Virtual Machine is running on a different OS that hosts machine
To run a container needs fewer resources
To run a VM needs fewer resources
Very lightweight
Large resources get utilized while running VM
Docker Integration With Node.js Rest API 

Environment Setup

Now, we can get to the actual implementation, so for this purpose we need to install docker on our local machine. First, we need to check if docker is available on your local machine and if not, then please follow the steps to download and install docker on your local machine. You will get docker installer as per your operating system. Actually, docker is a Linux based system so it is very easy to install on Linux based systems.
So, please visit the link and follow the steps to install docker here.

Docker Commands

After the installation gets completed now we can start exploring the docker commands. So, the docker commands can be run from the command prompt. So first, open a command prompt or terminal.
docker version
First, open the terminal and run command docker version.
Docker Integration With Node.js Rest API 
This command gives the docker installed version
docker info
Now, run the command docker info 
  1. Containers: 2  
  2.  Running: 0  
  3.  Paused: 0  
  4.  Stopped: 2  
  5. Images: 8  
  6. Server Version: 18.06.1-ce  
  7. Storage Driver: overlay2  
  8.  Backing Filesystem: extfs  
  9.  Supports d_type: true  
  10.  Native Overlay Diff: true  
  11. Logging Driver: json-file  
  12. Cgroup Driver: cgroupfs  
  13. Plugins:  
  14.  Volume: local  
  15.  Network: bridge host macvlan null overlay  
  16.  Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog  
  17. Swarm: inactive  
  18. Runtimes: runc  
  19. Default Runtime: runc  
  20. Init Binary: docker-init  
  21. containerd version:  (expected: 468a545b9edcd5932818eb9de8e72413e616e86e)  
  22. runc version: N/A (expected: 69663f0bd4b60df09991c08812a60108003fa340)  
  23. init version: v0.18.0 (expected: fec3683b971d9c3ef73f284f176672c44b448662)  
  24. Security Options:  
  25.  apparmor  
  26.  seccomp  
  27.   Profile: default  
  28. Kernel Version: 4.15.0-43-generic  
  29. Operating System: Ubuntu 18.04.1 LTS  
  30. OSType: linux  
  31. Architecture: x86_64  
  32. CPUs: 4  
  33. Total Memory: 3.709GiB  
  34. Name: amitcp  
  36. Docker Root Dir: /var/lib/docker  
  37. Debug Mode (client): false  
  38. Debug Mode (server): false  
  39. Registry:  
  40. Labels:  
  41. Experimental: false  
  42. Insecure Registries:  
  44. Live Restore Enabled: false  
After running basic commands of docker (docker version and docker info) we can start to explore more on docker.
docker image ls
This command will list down images available on your local machine. Docker image includes system libraries, other files and dependencies for the executable code. Docker image can reuse static image layers for different projects. We can download the image as per our requirement.
Docker Integration With Node.js Rest API 
docker pull
Pull an image or a repository from a registry. Most of your images will be created on top of a base image from the registry here. Docker Hub contains many pre-built images that you can pull and use to build our application on top of that.
docker pull nodejs
docker run hello-world
This will run the hello-world image. This is the most lightweight image. This is available after installation of docker on local machine. So using docker run command we can run docker image locally.
Docker Integration With Node.js Rest API 
docker container ls --all
Docker Integration With Node.js Rest API 
This command will give you some more details like commands available in that docker, last executed. An instance of an image is called a container. Running form of image means container. You can have many running containers of the same image. You can see all your images with docker images whereas you can see your running containers with docker ps (and you can see all containers with docker ps -a). So a running instance of an image is a container.
Recap and cheat sheet
  1. ## List Docker CLI commands  
  2. docker  
  3. docker container --help  
  5. ## Display Docker version and info  
  6. docker --version  
  7. docker version  
  8. docker info  
  10. ## Execute Docker image  
  11. docker run hello-world  
  13. ## List Docker images  
  14. docker image ls  
  16. ## List Docker containers (running, all, all in quiet mode)  
  17. docker container ls  
  18. docker container ls --all  
  19. docker container ls -aq  
After understanding the commands docker uses and the way to execute these commands we will move ahead.
Develop app in docker environment
Now we will develop one javascript based application using docker.
Create one sample folder first
Create file : package.json
And paste the below code,
  1. {  
  2.    "name""docker_web_app",  
  3.    "version""1.0.0",  
  4.    "description""Node.js on Docker",  
  5.    "author""First Last <[email protected]>",  
  6.    "main""server.js",  
  7.    "scripts": {  
  8.      "start""node server.js"  
  9.    },  
  10.    "dependencies": {  
  11.      "express""^4.16.1"  
  12.    }  
  13.  }  
Create file : server.js
Paste the below code,
  1. 'use strict';  
  3. const express = require('express');  
  5. // Constants  
  6. const PORT = 8080;  
  7. const HOST = '';  
  9. // App  
  10. const app = express();  
  11. app.get('/', (req, res) => {  
  12.  res.send('testing node app');  
  13. });  
  15. app.listen(PORT, HOST);  
  16. console.log(`Running on http://${HOST}:${PORT}`);  
Create a file called Dockerfile
What is Dockerfile ?
Here we can declare or specify the software requirements or prerequisite as per my applications.
Paste the below code,
  1. FROM node:8  
  2. # Create app directory  
  3. WORKDIR /usr/src/app  
  4. COPY package*.json ./  
  5. # Install app dependencies  
  6. RUN npm install  
  7. COPY . .  
  8. EXPOSE 8080  
  9. CMD [ "npm""start" ]  
Create a file called .dockerignore
Paste the below code
Building application’s docker image
Open the terminal
And run the below command
docker build -t node-web-app .
Docker Integration With Node.js Rest API 
Your image will now be listed by Docker:
docker images
Run the image
docker run -p 49160:8080 -d node-web-app
Here 49160 is port number exposed by docker for the outside access.
Test the application
Finally we need to see the result so open the browser and http://localhost:49160/
Docker Integration With Node.js Rest API
Code modification and rebuild the image
  • Now change your server.js file and save the changes.
  • Again run the build command from terminal.
  • Now remove the existing docker container

    docker container rm <docker_container_id> --force
  • Again run the image

Advantages of Docker

  • Docker manages to reduce deployment time. Docker ensures consistent environments from development to production.
  • Docker containers are configured to maintain all configurations and dependencies internally.
  • Portability is one more important benefit of docker. We can run any docker image to any other operating system or any cloud like AWS or Azure or Google cloud.
  • Designing Microservice based applications


This all about docker and integrating node api. This way we can create any application and integrate with docker. For understanding more about docker please visit here.

Similar Articles