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"]