Multi-Stage Builds
Multi-stage, builds, mein, EK, SE, ZYAADA, "FROM" INSTRUCTIONS, hoti, HAIN — HAR, EK, EK, "STAGE" hai. PEHLE, STAGE, mein, BUILD, TOOLS, (compiler, npm, waghera) use, karke, APP, COMPILE/BUILD, kiya, jaata hai.
FINAL, STAGE, EK, FRESH, SMALL, BASE, IMAGE, se, SHURU, hoti, hai, aur, "COPY --from=" ke, zariye, sirf, FINAL, BUILD, OUTPUT, ko, PEHLE, STAGE, se, COPY, kiya, jaata, hai — COMPILER, source, code, aur, BUILD, TOOLS, FINAL, IMAGE, mein, INCLUDE, nahi, hote, ISSE, IMAGE, SIZE, BAHUT, CHOTI, ho, jaati, hai.
# Stage 1: Build
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build
# Stage 2: Production (chota, clean image)
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/server.js"]- Multiple FROM instructions = multiple stages, har ek naam ke saath
- COPY --from= se sirf zaroori output next stage mein copy hota hai
- Build tools aur source code final image mein include nahi hote, size chota
"FROM ... AS stage-name" se, STAGE, ko, EK, NAAM, diya, ja, sakta hai, JISE, BAAD, mein, "COPY --from=stage-name" ya, "FROM stage-name" (nayi, stages, ke, base, ke, roop, mein) REFERENCE, kiya, ja, sakta hai.
FROM golang:1.22 AS builder
WORKDIR /src
COPY . .
RUN go build -o app .
FROM scratch
COPY --from=builder /src/app /app
ENTRYPOINT ["/app"]"--target" flag, se, "docker build" ko, batao, ki, sirf, EK, SPECIFIC, STAGE, tak, hi, BUILD, karna, hai — YE, USEFUL, hai, agar, TUMHARI, TESTING/DEVELOPMENT, stage, ALAG, hai, PRODUCTION, stage, se.
docker build --target builder -t myapp:dev .
docker build --target production -t myapp:prod .