Что такое multi-stage build?

Middle
1.1k просмотров
AFK Offer AI

Multi-stage build — техника в Docker, где в одном Dockerfile несколько стадий (FROM), и финальный образ содержит только результат последней стадии. Типичный пример для Go: первая стадия собирает бинарник в образе с Go SDK (~800MB), вторая копирует только бинарник в минимальный образ (alpine или scratch ~5MB).

FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o server ./cmd/server

FROM alpine:3.19 COPY --from=builder /app/server /server CMD ["/server"]

Итоговый образ в 100 раз меньше, не содержит исходников и инструментов сборки — безопаснее и быстрее деплоится.

Следующий вопрос

Как структурировать Go проект?