Day 88

Docker Basics

13 min
JavaScript 100 Days

Docker apps ko containers mein package karta hai — same environment har jagah. 'Works on my machine' problem khatam! Node.js app Docker mein run karna production deployment standard hai.

Dockerfile for Node.js

Node.js app containerize karo.

Dockerfile
dockerfile
# Base image
FROM node:20-alpine

# Working directory set karo
WORKDIR /app

# Dependencies copy karo pehle (caching ke liye)
COPY package*.json ./
RUN npm ci --only=production

# App code copy karo
COPY . .

# Non-root user (security)
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

# Port expose karo
EXPOSE 3000

# App start karo
CMD ["node", "src/app.js"]

Docker Compose

Multi-container setup with docker-compose.

docker-compose.yml
yaml
version: "3.8"

services:
  api:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
      - MONGODB_URI=mongodb://mongo:27017/myapp
      - JWT_SECRET=supersecret
    depends_on:
      - mongo
    volumes:
      - .:/app
      - /app/node_modules
  
  mongo:
    image: mongo:7
    ports:
      - "27017:27017"
    volumes:
      - mongo-data:/data/db

volumes:
  mongo-data:

# Commands:
# docker-compose up        — start karo
# docker-compose down      — stop karo
# docker-compose logs -f   — logs dekho

🎯 Practice Challenge

Express + MongoDB app ko Docker mein run karo. docker-compose se ek command mein sab start ho.