Dockerize a NextJS Web Application

Allwin Winfred J
2 min readApr 30, 2023

--

Introduction:

Docker is a powerful tool that can be used to containerize applications and make them easily deployable. In this blog, we will be discussing how to Dockerize a Next.js application using a Dockerfile and docker-compose.yml file. By the end of this blog, you will have a basic understanding of how to containerize a Next.js application using Docker.

Dockerizing a Next.js Application:

The first step in Dockerizing a Next.js application is to create a Dockerfile. A Dockerfile is a text file that contains instructions for building a Docker image.
Here is an example Dockerfile for a Next.js application:

FROM node:16-alpine

WORKDIR /app

COPY package*.json ./

RUN yarn install

COPY . .

COPY .env.development .

RUN yarn build:dev

ENV NODE_ENV=development
ENV PORT=3005

EXPOSE 3005

CMD ["yarn","start:dev"]

Let’s go through the different parts of the Dockerfile:

  • FROM node:16-alpine specifies the base image that we will be using. In this case, we are using the node:16-alpine image, which is a lightweight image based on Alpine Linux and includes Node.js.
  • WORKDIR /app sets the working directory inside the container to /app.
  • COPY package*.json ./ copies the package.json and yarn.lock files into the container.
  • RUN yarn install installs the dependencies using yarn.
  • COPY . . copies the rest of the application files into the container.
  • COPY .env.development . copies the environment file into the container.
  • RUN yarn build:dev builds the application for development.
  • ENV NODE_ENV=development sets the environment variable NODE_ENV to development.
  • ENV PORT=3005 sets the environment variable PORT to 3005.
  • EXPOSE 3005 exposes port 3005 for the application.
  • CMD ["yarn","start:dev"] starts the application in development mode.

Now that we have created the Dockerfile, we need to create a docker-compose.yml file. The docker-compose.yml file is used to define the services that make up your application.
Here is an example docker-compose.yml file for a Next.js application:

version: '3.3'
services:
app:
container_name: <container_name>
build: .
ports:
- "3005:3005"
environment:
- NODE_ENV=development

Let’s go through the different parts of the docker-compose.yml file:

  • version: '3.3' specifies the version of docker-compose that we are using.
  • services: defines the services that make up your application.
  • app: is the name of the service.
  • container_name: <container_name> sets the name of the container.
  • build: . specifies the path to the Dockerfile.
  • ports: - "3005:3005" maps port 3005 on the host to port 3005 in the container.
  • environment: - NODE_ENV=development sets the environment variable NODE_ENV to development.

Conclusion:

In this blog, we have discussed how to Dockerize a Next.js application using a Dockerfile and docker-compose.yml file. We have gone through the different parts of the Dockerfile and docker-compose.yml file and explained what they do. By following these steps, you can easily containerize your Next.js application and make it easily deployable.

--

--

Allwin Winfred J
Allwin Winfred J

Written by Allwin Winfred J

I'm Allwin Winfred, a results-driven DevOps Engineer with a passion for streamlining software development and IT operations. #DevOps #TechEnthusiast

No responses yet