DEV Community

Cover image for Revolutionize Your Nest.js Development: 4 Steps to Dockerize Your Nest.js App
Rishi Kumar
Rishi Kumar

Posted on • Updated on

Revolutionize Your Nest.js Development: 4 Steps to Dockerize Your Nest.js App

Introduction

In this tutorial, we will walk you through the process of cloning a "Nest.js demo" project, setting up a development environment, creating a Docker image for your project, and finally pushing the image to Docker Hub. By following these steps, you'll be able to containerize your Nest.js application and share it with others.


Step 1: Clone the Nest TypeScript Starter Project

First, let's get started by cloning the Nest TypeScript Starter project to your local computer. Open your terminal and run the following command:

git clone https://github.com/DevSpeaks/typescript-starter.git nest-typescript-starter
Enter fullscreen mode Exit fullscreen mode

Once the repository is cloned, navigate into the project directory:

cd nest-typescript-starter
Enter fullscreen mode Exit fullscreen mode

Now, let's install the project dependencies and run the application to ensure it's working as expected:

npm install
npm run start
Enter fullscreen mode Exit fullscreen mode

You should see your Nest.js application up and running locally. You can access it in your browser by navigating to http://localhost:3000.


Step 2: Create a Docker Image

To containerize your Nest.js application, you'll need to create a Docker image. To get started, make sure you have Docker installed on your machine. Create a file named Dockerfile in your project directory. You can use a text editor or run the following command to create it:

touch Dockerfile
Enter fullscreen mode Exit fullscreen mode

Now, open the Dockerfile in your text editor and add the following content:

# Use the official Node.js 16 image as the base image
FROM node:16

# Set the working directory inside the container
WORKDIR /app

# Copy package.json and package-lock.json to the container
COPY package*.json ./

# Install project dependencies
RUN npm install

# Copy the rest of the application source code to the container
COPY . .

# Expose the port your Nest.js application is listening on
EXPOSE 3000

# Command to start your Nest.js application
CMD [ "npm", "run", "start:prod" ]
Enter fullscreen mode Exit fullscreen mode

Next, create a .dockerignore file in your project directory to specify which files and directories should be ignored when copying files to the Docker image. You can use a text editor or run the following command to create it:

touch .dockerignore
Enter fullscreen mode Exit fullscreen mode

Add the following content to your .dockerignore file:

node_modules
npm-debug.log
Enter fullscreen mode Exit fullscreen mode

Step 3: Create and Test the Docker Image

Before pushing the Docker image to Docker Hub, let's test it locally to ensure everything works as expected. Build the Docker image by running the following command in your project directory:

docker build -t nest-app .
Enter fullscreen mode Exit fullscreen mode

This command builds the Docker image with the tag nest-app. After the build is complete, you can run the Docker container using the following command:

docker run -p 3000:3000 nest-app
Enter fullscreen mode Exit fullscreen mode

You should see your Nest.js application running inside a Docker container. You can access it in your browser by navigating to http://localhost:3000.


Step 4: Push the Docker Image to Docker Hub

To share your Docker image with others, you can push it to Docker Hub. First, log in to your Docker Hub account using the docker login command:

docker login
Enter fullscreen mode Exit fullscreen mode

Enter your Docker Hub username and password when prompted.

Now, tag your Docker image with your Docker Hub username and the repository name you want to use. Replace your-username and your-repo-name with your actual Docker Hub username and repository name:

docker tag nest-app your-username/your-repo-name:latest
Enter fullscreen mode Exit fullscreen mode

Finally, push the Docker image to Docker Hub:

docker push your-username/your-repo-name:latest
Enter fullscreen mode Exit fullscreen mode

Your Nest.js Docker image is now available on Docker Hub and can be pulled by others using the docker pull command.

Conclusion
In this tutorial, we've successfully cloned a Nest TypeScript Starter project, created a Docker image for the application, tested it locally, and pushed it to Docker Hub. This allows you to easily share your Nest.js application as a containerized image with others.

Part 2: Deploy your application on AWS EC2 servers.


Extra: NestJS Developers: Upgrade Your Logging with This Simple Guide

Top comments (2)

Collapse
 
mahabur_rahman_217a75f79a profile image
Mahabur rahman

But when i changes in my file how it will changes real time ??

Collapse
 
mrrishimeena profile image
Rishi Kumar

Every time you modify your code, fix some bugs or add new features. You create a new docker image using the same name. it works like a GitHub repo.
PS: usually people don't create docker images for little changes.