📝 Dockerfile Example
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . EXPOSE 3000 CMD ["node", "server.js"]
🔧 Build & Push
docker build -t myapp:1.0 . docker tag myapp:1.0 user/myapp:1.0 docker login docker push user/myapp:1.0
📋 Instructions
FROM/WORKDIR/COPY/RUN/ENV/ARG EXPOSE/USER/CMD/ENTRYPOINT/HEALTHCHECK
🎯 Multi-Stage (10x smaller!)
FROM node:20-alpine AS builder WORKDIR /app COPY . . RUN npm ci && npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html EXPOSE 80
📦 .dockerignore
node_modules .git .env *.log
⚡ Optimization
- Alpine base (5-10x smaller)
- Multi-stage build
- Layer order: rarely-change first
- Pin version, never :latest
- Non-root user
- BuildKit: DOCKER_BUILDKIT=1
🔍 Scan
docker scout cves myapp:1.0 trivy image myapp:1.0
🎓 মূল কথা ⭐
Multi-stage = 10x smaller। Alpine base = standard। .dockerignore essential। Never :latest in production।