Що означає "multi-stage build"?
"Multi-stage build" - це спосіб збірки Docker-образу, при якому використовується кілька стадій (етапів) в одному Dockerfile. Одна стадія збирає проєкт (наприклад, встановлює залежності, компілює код), а інша використовує тільки результат збірки, не забираючи все сміття з першого етапу.
Що дає multi-stage:
1. Менший підсумковий образ На фінальному етапі копіюється тільки потрібний артефакт (наприклад, бінарник або зібраний білд фронтенду), без SDK, компіляторів і тимчасових файлів.
2. Безпечніший образ Під час виконання застосунку не буде інструментів розробки, утиліт збірки й зайвих залежностей - менша поверхня атаки.
3. Легше підтримувати
Усе в одному Dockerfile, але поділено на стадії: build, test, prod тощо.
Короткий приклад:
## Stage 1 - збірка
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build
# Stage 2 - легкий фінальний образ
FROM nginx:alpine
COPY /app/dist /usr/share/nginx/htmlУ результаті виходить маленький і чистий фінальний образ, що містить тільки те, що потрібно для запуску.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.