Sobes.tech
Middle

Kādos gadījumos tiek izmantota daudzposmu (multi-stage) būvniecība?

sobes.tech AI

Atbilde no AI

Daudzposmu būvniecība (multi-stage build) Docker tiek izmantota šādos gadījumos:

  1. Galīgā attēla izmēra samazināšana: Pirmajā (vai starpposma) būvniecības posmā ir nepieciešamie rīki, kas nepieciešami kompilācijai, testiem vai citiem būvniecības posmiem (piemēram, kompilators, būvniecības atkarības). Otrajā (galīgajā) posmā tiek kopēti tikai nepieciešamie artefakti (kompilētais kods, izpildālie faili, palīgbibliotēkas). Tas ļauj izvairīties no nevajadzīgu atkarību un būvniecības rīku iekļaušanas galīgajā attēlā, būtiski samazinot tā izmēru.
  2. Būvniecības un palaišanas posmu atdalīšana: Skaidra posmu atdalīšana atvieglo būvniecības procesa saprašanu un atkļūdošanu. Var būt posmi koda būvniecībai, testu palaišanai, lintingam un tikai pēc tam izveidot galīgo attēlu ar gatavu izvietošanai lietojumu.
  3. Drošības uzlabošana: Galīgais attēls satur minimālo nepieciešamo komponentu daudzumu, kas samazina uzbrukuma virsmu. Būvniecības rīki un sākotnējais kods, kas var saturēt ievainojamības, netiek iekļauti lietošanā esošajā attēlā.
  4. Būvniecības paātrināšana (dažos gadījumos): Starpposma attēli var tikt kešoti, un, ja ir izmaiņas tikai pēdējos posmos, nav nepieciešams visu būvēt no jauna.
  5. Būvniecības procesa vienkāršošana: Lietojumprogrammas būvniecība un tās Docker-ieviešanas izveide kļūst par vienotu automatizētu procesu Dockerfile ietvaros, kas vienkāršo CI/CD caurules.

Piemērs, izmantojot Go:

# Būvniecības posms
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
# Izpildāma faila būvniecība
RUN go build -ldflags="-s -w" -o myapp .

# Galīgais posms
FROM alpine:latest
WORKDIR /app
# Tikai iepriekšējā posma izpildāmo failu kopēšana
COPY --from=builder /app/myapp .
# Lietojumprogrammas palaišanas komanda
CMD ["./myapp"]