Sobes.tech
Middle

Какви са многостепенните сборки в Docker и как работят?

sobes.tech AI

Отговор от AI

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

Как работи:

  • Разделяне на етапи: Процесът на изграждане се разделя на няколко етапа (FROM), всеки от които наследява от собствен образ.
  • Копиране на артефакти: Файловете и артефактите, създадени в предишните етапи, се копират в следващите с командата COPY --from=<име_на_етап или номер>.
  • Краен образ: Крайният образ се създава въз основа на последния етап. В него се включват само файловете, които са били явно копирани от предишните етапи. Междинните слоеве и инструментите, използвани в ранните етапи за компилация или тестове, не се включват в крайния образ.

Предимства:

  • Намаляване на размера на образа: В крайния образ се включват само необходимите за стартиране на приложението файлове.
  • Подобряване на сигурността: В крайния образ не се включват инструменти за изграждане, компилатори и други потенциално уязвими компоненти.
  • Ускоряване на изграждането: Междинните слоеве могат да се кешират.
  • Чистота на Dockerfile: Различните етапи на изграждане (компилация, тест, опаковане) са логически разделени.

Пример:

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

# Етап за изпълнение: стартиране на приложението
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]