# Docker Integration — NestJS: Scalable Node.js APIs बनाना

Source: https://www.skillbyai.com/hi/nestjs/nestjs-docker

> Multi-stage Dockerfile से NestJS को containerize करें और Docker Compose से database के साथ चलाएँ।

## Dockerfile

Multi-stage build: एक stage में compile करें, lightweight stage में run करें।

```dockerfile
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/main.js"]
```

## docker-compose

एक ही command से NestJS + database को spin up करें।

```yaml
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:password@db:5432/mydb
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_PASSWORD=password
```

त्वरित जाँच

**Quiz:** Nest app के लिए multi-stage Dockerfile क्यों?

- [ ] दो servers चलाने के लिए
- [x] एक stage में TypeScript compile करके सिर्फ़ dist और prod dependencies भेजने के लिए
- [ ] Node की ज़रूरत हटाने के लिए

*Answer:* एक stage में TypeScript compile करके सिर्फ़ dist और prod dependencies भेजने के लिए. final image में devDependencies और sources नहीं होते, इसलिए छोटी होती है।
