Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке multi-stage build?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Multi-stage build** - це спосіб збірки Docker-образу, при якому в одному Dockerfile використовується кілька стадій (шарів збірки), щоб підсумковий образ вийшов меншим і чистішим. **Ключове:** multi-stage build - це спосіб зібрати застосунок в одному образі, а запустити в іншому, меншому й чистому.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення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 - це спосіб зібрати застосунок в одному образі, а запустити в іншому, меншому й чистому.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.