#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
Question 40 of 62medium

How to containerize a Node.js application with Docker?

Docker setup for Node.js applications.

What You'll Learn

  • Writing Dockerfile
  • Docker Compose setup
  • Best practices

Basic Dockerfile

code.txtDOCKERFILE
FROM node:20-alpine

WORKDIR /app

# Copy package files first (for caching)
COPY package*.json ./

RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

Multi-Stage Build

code.txtDOCKERFILE
# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Production stage
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist
EXPOSE 3000
USER node
CMD ["node", "dist/server.js"]

.dockerignore

code.jsJavaScript
node_modules
npm-debug.log
.git
.env

Docker Compose

config.ymlYAML
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=mongodb://mongo:27017/mydb
    depends_on:
      - mongo

  mongo:
    image: mongo:6
    volumes:
      - mongo-data:/data/db

volumes:
  mongo-data:
$ terminalBash
docker-compose up -d