Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Docker Documentation25টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Containerization
  • Architecture
  • Installation
  • Images
  • Containers
  • Dockerfile
  • Volumes
  • Networks
  • Docker Compose
  • Environment Variables
  • Node.js + Docker
  • Next.js + Docker
  • Express.js + Docker
  • NestJS + Docker
  • Databases + Docker
  • Development Workflow
  • Production
  • Multi-stage Builds
  • Security
  • Optimization
  • CI/CD
  • Deployment
  • Real-world Project
  • Interview Questions
  1. Docs
  2. Docker
  3. Multi-stage Builds
DockerAdvanced

Multi-stage Builds

বড় build-এর জন্য আলাদা stage, ছোট runtime — multi-stage pattern ব্যাখ্যা ও উদাহরণ — বাংলায়।

10টি অংশবাংলা ভাষায়

Multi-stage build মানে একই Dockerfile-এ একাধিক FROM — প্রতিটি stage আলাদা environment। আগের stage-এর শুধু দরকারি artifact পরের stage-এ নিয়ে আসা হয়, বাকিটা ফেলে দেওয়া হয়।

কেন দরকার

  • ছোট image — build tools আর runtime stage-এ থাকে না
  • নিরাপদ — source code/কী surface কমে
  • আলাদা config — prod/dev আলাদা stage
  • টেকসই builder — --target দিয়ে একটি stage বেছে বেশি

আদর্শ Example — TypeScript API

Dockerfiledockerfile
dockerfile
# STAGE 1 —— build
FROM node:20-alpine AS builder
WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY tsconfig.json ./
COPY src ./src

RUN npm run build
# → dist/ তৈরি

# STAGE 2 —— production dependencies
FROM node:20-alpine AS prod-deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev

# STAGE 3 —— runtime
FROM node:20-alpine
WORKDIR /app

ENV NODE_ENV=production

COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist

USER node
EXPOSE 3000

CMD ["node", "dist/server.js"]

Build cache-কে কাজে লাগানো

প্রতিটি stage আলাদাভাবে cache হয়। সবচেয়ে স্থিতিশীল file (package.json) আগে কপি ও install করুন — কোড বদলালে dependency layer re-run হয় না।

Stage-এর মধ্যে file চয়ন

COPY --fromdockerfile
dockerfile
# builder stage থেকে শুধু dist
COPY --from=builder /app/dist ./dist

# static assetsও
COPY --from=builder /app/public ./public
नहीं বিল্ড করলে না

Files যেগুলো runtime-এ দরকার না — যেমন source, tests, build tools — সেগুলো runtime stage-এ কপি করবেন না। তাতে image ভারী হয় এবং attack surface বাড়ে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরProduction-এর জন্য DockerপরেরDocker Security Best Practices
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com