Junior — Middle
Как да реализираме многостепенна сборка на образ на контейнер?
sobes.tech AI
Отговор от AI
Мултистейдж билд (multi-stage build) в Docker позволява създаването на няколко етапа на изграждане в един Dockerfile, което помага за намаляване на размера на крайния образ и разделяне на етапите на компилация от етапа на изпълнение.
Основната идея е да се използват няколко инструкции FROM в един Dockerfile, където всеки следващ етап може да използва артефактите от предишните етапи.
Пример:
# Етап на изграждане
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Финален образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Тук първо се изгражда приложението на Go, а след това в крайния образ се копира само компилираното бинарно, без изходните файлове и инструментите за изграждане.