# मल्टी-स्टेज बिल्ड — Docker Fundamentals: Images, Containers और Compose

Source: https://www.skillbyai.com/hi/docker/docker-multi-stage-builds

> Multi-stage builds से images छोटे करें जो एक stage में compile करते हैं और अंतिम image में केवल runtime artifacts copy करते हैं।

## इसकी ज़रूरत क्यों?

बिल्ड टूल्स, कंपाइलर, और सोर्स कोड अक्सर रनटाइम पर ज़रूरी नहीं होते, फिर भी एक-स्टेज Dockerfile उन्हें भेज देता है — जिससे इमेज और उसकी अटैक सतह बढ़ जाती है।

## बिल्ड स्टेज + रनटाइम स्टेज

`AS` से किसी स्टेज को नाम दें, फिर `COPY --from=<stage>` केवल बना हुआ आर्टिफ़ैक्ट पतली अंतिम इमेज में लाता है — कंपाइलर और dev डिपेंडेंसी कभी उसमें नहीं जातीं।

```dockerfile
# --- build stage ---
FROM node:22 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build

# --- runtime stage ---
FROM node:22-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package.json .
RUN npm ci --omit=dev
CMD ["node", "dist/server.js"]
```
