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