Що таке multi-stage build?
Multi-stage build - це спосіб збірки Docker-образу, при якому використовується кілька стадій (шарів збірки) в одному Dockerfile, щоб підсумковий образ вийшов меншим і чистішим.
Навіщо це потрібно (по-junior'ськи)
Зазвичай для збірки застосунку потрібні компілятори, dev-залежності та інструменти. Але в фінальному образі вони не потрібні й тільки займають місце. Multi-stage build дозволяє:
- збирати застосунок в одній стадії,
- а в фінальний образ копіювати тільки результат (наприклад, бінарник або скомпільований код).
Як це виглядає
Dockerfile
# 1) стадія збірки
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o app
# 2) фінальна стадія
FROM alpine:latest
COPY --from=builder /app/app /app/app
CMD ["/app/app"]Що відбувається
| Стадія | Що робить |
|---|---|
builder | Збирає застосунок, включає важкі залежності |
final | Бере тільки готовий файл і нічого зайвого |
Підсумок
- Підсумковий образ маленький
- У ньому тільки те, що потрібно на проді
- Без dev-сміття, без компіляторів
В одній фразі: Multi-stage build - це спосіб зібрати застосунок в одному образі, а запустити в іншому, меншому й чистому.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.