# मल्टी-स्टेज बिल्ड — डॉकर

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

> एक स्टेज में कंपाइल करें, अंतिम छोटी इमेज में केवल रनटाइम आर्टिफ़ैक्ट भेजें।

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

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

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

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

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

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