Sobes.tech
Senior

Какво е Multi-stage build в Docker?

sobes.tech AI

Отговор от AI

Мултистейдж билд в Docker е техника, която позволява създаването на няколко етапа на билд в един Dockerfile, като всеки етап може да използва свой собствен базов образ. Основната идея е да се отделят етапите на билд (например, компилация, инсталиране на зависимости) от крайния образ, така че в крайния контейнер да попадат само необходимите файлове за стартиране на приложението, без излишни инструменти и артефакти.

Това значително намалява размера на крайния образ и повишава сигурността, тъй като в крайния контейнер няма инструменти за билд.

Пример за Dockerfile с мултистейдж билд:

# Етап на билд
FROM node:18 AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build

# Финален етап
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

Тук първо се изгражда React приложението, а след това само готовите статични файлове се копират в лек nginx образ.