# Docker — Multistage build (one-screen)

## 1) Идея
**Multistage build** — многоэтапная сборка Docker-образа: сборку делим на этапы (stages) и помечаем их.

Обычно:
- stage 1: “builder” (компиляция, зависимости, tooling)
- stage 2: “runtime” (только артефакт + минимальный runtime)

## 2) Что даёт
- **меньше итоговый образ**,
- быстрее сборка/доставка (часто),
- меньше зависимостей в runtime,
- **меньше поверхность атаки**,
- можно переиспользовать промежуточные stages.

## 3) Мини-пример
```dockerfile
FROM golang:1.22 AS builder
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build -o app ./cmd/app

FROM gcr.io/distroless/static
COPY --from=builder /src/app /app
ENTRYPOINT ["/app"]
```

---
**Source:** [[Multistaging - Docker|Multistaging - Docker]]
