Skip to main content

Що таке 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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.