Sobes.tech
Middle+

Какво е multi-stage build в Docker? За какво е нужен?

sobes.tech AI

Отговор от AI

Мултистейдж билд в Docker позволява използването на няколко етапа на изграждане в един Dockerfile. Това помага за създаването на компактни и оптимизирани изображения, като отделя етапите на изграждане и финалното изпълнение на приложението.

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

Предимства:

  • Намаляване на размера на крайното изображение
  • Повишаване на сигурността (по-малко компоненти в крайния контейнер)
  • Чистота и удобство при управление на Dockerfile

Пример:

# Етап на изграждане
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Крайно изображение
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/myapp
CMD ["myapp"]