DockerAdvanced
Image Size ও Build Optimization
ছোট image, layer caching, .dockerignore, BuildKit — দ্রুত ও হালকা build — বাংলায়।
15টি অংশবাংলা ভাষায়
প্রোডাকশন dock-এ image যত ছোট, deploy তত দ্রুত, ঠিক তেমন security তত ভালো। optimization-এর মূল কৌশলগুলো জানি।
১. .dockerignore
.dockerignoretext
text
node_modules
.next
dist
.git
.env
.env.*
*.log
Dockerfile
.dockerignore
README.md২. Layer ordering ও caching
সঠিক orderdockerfile
dockerfile
# ভুল — কোড আগে → প্রতি build-এ install আবার
COPY . .
RUN npm ci
# সঠিক — dependency স্থিতিশীল, পরে code
COPY package*.json ./
RUN npm ci
COPY . .৩. হালকা base image
Slim/alpinedockerfile
dockerfile
FROM node:20-alpine # ~50MB
# vs node:20 (800MB+), node:20-slim (~250MB)
# distroless: শুধু runtime৪. Multi-stage + production deps
প্রোডাকশন deps আলাদাdockerfile
dockerfile
# builder
FROM node:20-alpine AS builder
...
RUN npm ci && npm run build
# runtime — devDependencies ছাড়া
FROM node:20-alpine
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist৫. BuildKit ও আরও
BuildKit flagsbash
bash
# BuildKit default (Docker 23+) — parallel stage, mount cache
DOCKER_BUILDKIT=1 docker build -t my-api .
# registry cache — uniform across machines
docker build --cache-from type=registry,ref=my-api:cache .cache mount (npm)dockerfile
dockerfile
RUN --mount=type=cache,target=/root/.npm \
npm ci --omit=devSize যাচাই
Inspectbash
bash
docker image ls
docker history my-api
docker system dfলক্ষ্য
Node/Express API-এর production image 100-150MB-এর নিচে রাখা যায় (slim/base) — distroless-এ আরও কম। মাঝে ছোট ছোটWin আসলে okay, কিন্তু ভারী না।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।