Sobes.tech
Middle

Кайсы учурларда көп баскычтуу (multi-stage) курулуш колдонулат?

sobes.tech AI

AIден жооп

Dockerдогу көп этаптуу куруу (multi-stage build) төмөнкү учурларда колдонулат:

  1. Акыркы образдын өлчөмүн азайтуу: Биринчи (же аралык) этапта куруу үчүн керектүү инструменттер болот, мисалы, компиляциялоо, тесттер же башка куруу этаптары үчүн (мисалы, компилятор, куруу көздөгөндөшмөлөр). Экинчи (акыркы) этапта гана колдонууга керектүү артефактар көчүрүлөт (компиляцияланган код, аткарылуучу файлдар, иштөө китепканалары). Бул акыркы образга керексиз көздөгөндөшмөлөр жана куруу инструменттерин киргизүүнү алдын алат, анын өлчөмүн кыйла азайтат.
  2. Куруу жана иштетүү этаптарын бөлүү: Ачык-айкын бөлүнүшү куруу процесси жана анын аныктамасын жеңилдетет. Куруу үчүн этаптарды, тесттерди иштетүү, линтинг жана андан соң даярдалган колдонмо менен финалдык образды түзүү үчүн этаптарды бөлүүгө болот.
  3. Коопсуздукту жакшыртуу: Акыркы образ минималдуу керектүү компоненттерди камтыйт, бул коркунучтуу аянтчаны кыскартат. Куруу инструменттери жана зыяндуу болушу мүмкүн болгон баштапкы код образга кирбейт, ал продакшнде колдонулат.
  4. Куруу ылдамдыгын жогорулатуу (кейде): Аралык образдар кэшделиши мүмкүн, жана акыркы этаптарда гана өзгөрүүлөр болсо, бардык процессти кайра баштоо керек эмес.
  5. Куруу процесин бириктирүү: Колдонмо жана анын Docker-образын түзүү автоматташтырылган процесске айланат, бул CI/CD pipelinesти жөнөкөйлөтөт.

Go колдонмосу үчүн мисал:

# Куруу этапы
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
# Ишке ашырылуучу файлды куруу
RUN go build -ldflags="-s -w" -o myapp .

# Акыркы этап
FROM alpine:latest
WORKDIR /app
# Алдыңкы этаптан гана ишке ашырылуучу файлды көчүрүү
COPY --from=builder /app/myapp .
# Колдонмону иштетүү командасы
CMD ["./myapp"]