Sobes.tech
Middle

Mis on mitmeastmelised ehitised Dockeris ja kuidas need töötavad?

sobes.tech AI

Vastus AI-lt

Mitmetasandiline ehitamine võimaldab Docker-i ehitusprotsessis kasutada mitut ajutist pilti, et saada optimeeritud lõpppilt.

Kuidas see töötab:

  • Etappide jagamine: Ehitamisprotsess jaguneb mitmeks etapiks (FROM), igaüks pärib oma põhipildi.
  • Artefaktide kopeerimine: Failid ja artefaktid, mis on loodud eelnevates etappides, kopeeritakse järgmisteks, kasutades käsku COPY --from=<etapi_nimi või number>.
  • Lõpppilt: Lõpppilt luuakse viimase etapi põhjal. Selles on ainult need failid, mis on selgelt eelmistest etappidest kopeeritud. Vahekihid ja tööriistad, mida kasutati varasemates etappides kompileerimiseks või testimiseks, ei kuulu lõpppildile.

Eelised:

  • Pildi suuruse vähendamine: Lõpppildile kuuluvad ainult need failid, mis on vajalikud rakenduse käivitamiseks.
  • Turvalisuse parandamine: Ehitusvahendid, kompilaatorid ja teised potentsiaalselt haavatavad komponendid ei kuulu lõpppildile.
  • Ehituskiiruse suurendamine: Vahekihid võivad olla vahemälus.
  • Dockerfile-i puhtus: Erinevad ehitusetapid (kompileerimine, testimine, pakkimine) on loogiliselt eraldatud.

Näide:

# Ehitusetapp: rakenduse kompileerimine
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Käivitamise etapp: rakenduse käivitamine
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]