4 min read
•Question 40 of 62mediumHow 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 /app/dist ./dist
EXPOSE 3000
USER node
CMD ["node", "dist/server.js"].dockerignore
code.jsJavaScript
node_modules
npm-debug.log
.git
.envDocker 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