Docker Basics
On this page
Why Containers Matter
Containers ensure the runtime environment is identical across development, staging, and production. This reduces environment-specific bugs and simplifies scaling.
Minimal Dockerfile Example
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY dist ./dist CMD ["node", "dist/server.js"]
Best Practices
- Use small base images
- Run as non-root user
- Do not bake secrets into images
- Use multi-stage builds for TypeScript
Production Insight
Containers simplify horizontal scaling but do not remove the need for monitoring, logging, and proper resource limits.