Sobes.tech
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, а след това в крайния образ се копира само компилираното бинарно, без изходните файлове и инструментите за изграждане.