How To Run Next.js application with Docker: Step By Step Guide

Share
image

Docker is a popular containerization platform that allows developers to package applications and their dependencies into standardized units, providing consistency across different environments. By containerizing our Next.js application, we can ensure portability, scalability, and ease of deployment.

Next.js, known for its robust features in crafting React applications, provides developers with an excellent framework for crafting dynamic and engaging web experiences.

Step By Step Guide To Run Next.js Application With Docker

Step 1: Setting Up a Next.js Project with Page Router

Before using Docker, let’s set up a Next.js project. If you haven’t already installed Node.js and npm, make sure to do so before proceeding. Then, open your terminal and run the following commands:

Setting Up a Next.js Project with Page Router

Step 2: Running Your Next.js Application

Once you’ve added Docker to your Next.js application, it’s time to see them in action. In your terminal, navigate to your project directory and run the following command:

npm run dev

This command will start your Next.js development server. Open your web browser and navigate to http://localhost:3000 to view your Next.js application like below:

Running Your Next.js Application

Step 3: Installing Docker

Make sure you have Docker installed on the Desktop

For Ubuntu use this ref:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04

Step 4: Create a Dockerfile in our project directory

A Dockerfile is a text document that contains instructions for building a Docker image. We’ll create a Dockerfile tailored for our Next.js application, configuring it to install dependencies, copy the application code, and specify the command to start the application.

Create a Dockerfile in our project directory

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

# Set the working directory in the container
WORKDIR /usr/src/app

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

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

# Install dependencies
RUN npm install

# Build the Next.js app
RUN npm run build

# Expose the port that your Next.js app will run on
EXPOSE 3000

# Start the Next.js app
CMD [“npm”, “start”]

Step 5: Create a docker-compose.yml file in our project directory

It helps define what services your application needs, like databases or web servers, and how they should be configured, making it easier to manage and deploy your application across different environments. It simplifies collaboration and ensures consistency in your application’s setup.

Create a docker-compose.yml file in our project directory

docker-compose.yml

version: ‘3.8’

services:
# Next.js app
web:
image: node:20
working_dir: /app
volumes:
– .:/app
ports:
– “1313:3000”
environment:
– NODE_ENV=development
command: >
bash -c “npm install && npm run dev”

Step 6: Command for running the Docker container

Command for running the Docker container

Step 7: Open Docker Container

Open Docker and look for the container that matches the name of your application. When you find it, you’ll see a folder inside the container that mirrors the structure of your local project directory.

Open Docker Container

Let’s Wrap It Up!

Docker serves as a versatile containerization platform, empowering developers to encapsulate applications and their dependencies into portable units. By containerizing our Next.js application, we ensure consistency across diverse environments, bolstering portability, scalability, and deployment efficiency.

LN Webworks expert team is ready to tailor solutions that meet your every need. Reach out to us now for project excellence and discover how we can help you with your web development projects.

LN Webworks
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.