Getting Started With Dockerizing Node.js Application: A Beginner’s Guide

In this article, we will learn how to dockerize the Node js application and build a docker image and a Docker container using the image. Dockerizing Node js applications is becoming increasingly popular in the tech industry because it allows developers to separate applications from the underlying infrastructure, making it easier to build and deploy applications across different environments.

What Is Docker?

Docker is an open platform for developing, distributing, and executing programs. Docker allows you to separate your programs from your infrastructure, allowing faster software delivery. Docker may be used to manage your infrastructure in the same way that you work your apps.

By utilizing Docker’s methods for swiftly shipping, testing, and deploying code, you may reduce the time between developing and executing code in production.

Creating A Dockerfile

Assuming that we have already created a sample Nodejs application. The next step is to create a file in the root directory called Dockerfile.

First, we need to define which image we want to build from. Here we will use version 9 of the Node available from Docker Hub.

FROM node:14

Then, create the working directory for your application.

# Create app directory

WORKDIR /app

Then pass the command to copy the package.json file and install app dependencies using the npm.

COPY package*.json

RUN npm install

Copy the rest of the application to the app directory.

COPY /app

Expose the port and start the application.

Expose 5000

CMD ["npm", "start"]

After following these steps, your Dockerfile should look like this.

FROM node:14

# Create app directory
WORKDIR /app

# Install app dependencies
COPY package*.json ./

RUN npm install

COPY . /app

# Expose the port and start the application
Expose 8080

CMD ["npm","start"]

Create a .dockerignore file so as not to copy unnecessary files to the container:

Your .dockerignore file should look like this

Creating A Dockerfile

This prevents the local module and debugs logs from being copied onto your Docker image.

Hire the expert node.js developers to build an exceptional solutions and help your web application succeed

Build Docker Image

Building your Docker image is easy and can be done using a single command.

docker build -t <docker-image-name> <filepath>

The -t flag lets you tag your image so it’s easier to find later.

Ex: docker build -t test1 .

After entering the command to build a docker image, the results you will see in the terminal are as follows:

Sending build context to Docker daemon 19.97kB
Step 1/7 : FROM node:14
9: Pulling from library/node
d660b1f15b9b: Pull complete
46dde23c37b3: Pull complete
6ebaeb074589: Pull complete
e7428f935583: Pull complete
eda527043444: Pull complete
f3088daa8887: Pull complete
1ded38ff7fdc: Pull complete
da44c9274f48: Pull complete
Digest: sha256:cddc729ef8326f7e8966c246ba2e87bad4c15365494ff3d681fa6f022cdab041
Status: Downloaded newer image for node:9
---> 08a8c8089ab1
Step 2/7 : WORKDIR /app
---> Running in cad30dfd3fdb
Removing intermediate container cad30dfd3fdb
---> 97cdf5dffbfd
Step 3/7 : COPY package*.json ./
---> fc4fa5670f19
Step 4/7 : RUN npm install
---> Running in 2e3c38322fd4
Removing intermediate container 2e3c38322fd4
---> 6b9912b8f798
Step 5/7 : COPY . /app
---> 33d29aad9ebe
Step 6/7 : EXPOSE 8080
---> Running in 8b2a54h557cc
Removing intermediate container 8b2a5ah557cc
---> 13b95635c201
Step 7/7 : CMD ["npm","start"]
---> Running in 50a5824edf5e
Removing intermediate container 50a5824edf5e
---> faa3092e5595
Successfully built faa3092e5595
Successfully tagged test1:latest

Now that the build is complete, you can check your image by using the below command :

docker image ls

You will get following result : 

Build Docker Image

Run Docker Container

After the image is built, we can run our docker container by the following command.

docker run -d -p <Host port>:<Docker port> <docker-image-name>

-d flag indicates the docker container is running in the background. The -p flag specifies which host port will be connected to the docker port.

Example : docker run -d -p 5000:5000 test1

Result

Run Docker Container

Docker Advantages

👉 Flexible resource sharing.
👉 Scalability – several containers can be hosted on a single server.
👉 Rapid deployment, simplicity in creating new instances, and faster migrations.
👉 The ease with which you may move and maintain your applications.

coma

Conclusion

In conclusion, this tutorial has explained the fundamentals of Dockerizing Node.js applications by using a Dockerfile to create a Docker image and running a basic Node.js application using Docker.

Keep Reading

Keep Reading

Struggling with EHR integration? Learn about next-gen solutions in our upcoming webinar on Mar 6, at 11 AM EST.

Register Now

Let's create something together!