Skip to main content

Що означає "multi-stage build"?

"Multi-stage build" - це спосіб збірки Docker-образу, при якому використовується кілька стадій (етапів) в одному Dockerfile. Одна стадія збирає проєкт (наприклад, встановлює залежності, компілює код), а інша використовує тільки результат збірки, не забираючи все сміття з першого етапу.

Що дає multi-stage:

1. Менший підсумковий образ На фінальному етапі копіюється тільки потрібний артефакт (наприклад, бінарник або зібраний білд фронтенду), без SDK, компіляторів і тимчасових файлів.

2. Безпечніший образ Під час виконання застосунку не буде інструментів розробки, утиліт збірки й зайвих залежностей - менша поверхня атаки.

3. Легше підтримувати Усе в одному Dockerfile, але поділено на стадії: build, test, prod тощо.

Короткий приклад:

dockerfile
## Stage 1 - збірка FROM node:18 AS builder WORKDIR /app COPY . . RUN npm install && npm run build # Stage 2 - легкий фінальний образ FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html

У результаті виходить маленький і чистий фінальний образ, що містить тільки те, що потрібно для запуску.

Коротка відповідь

Для співбесіди
Premium

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