Middle
Kas yra daugiapakopiai statybos Docker ir kaip jie veikia?
sobes.tech AI
Atsakymas iš AI
Daugiapakopės statybos leidžia naudoti kelis laikinuosius Docker vaizdus, siekiant gauti galutinį, optimizuotą vaizdą.
Kaip tai veikia:
- Etapų skaidymas: Statybos procesas yra padalintas į kelis etapus (
FROM), kiekvienas paveldėdamas savo pagrindinį vaizdą. - Artefaktų kopijavimas: Failai ir artefaktai, sukurti ankstesniuose etapuose, kopijuojami į vėlesnius naudojant komandą
COPY --from=<etapo_pavadinimas arba numeris>. - Galutinis vaizdas: Galutinis vaizdas sukuriamas remiantis paskutiniu etapu. Jame yra tik tie failai, kurie aiškiai nukopijuoti iš ankstesnių etapų. Tarpiniai sluoksniai ir įrankiai, naudoti ankstyvuose etapuose kompiliacijai ar testavimui, nėra įtraukti į galutinį vaizdą.
Privalumai:
- Sumažintas vaizdo dydis: Galutiniame vaizde yra tik tie failai, kurie reikalingi programos paleidimui.
- Saugumo gerinimas: Įrankiai, skirti statybai, kompiliatoriai ir kitos potencialiai pažeidžiamos komponentės nėra įtrauktos į galutinį vaizdą.
- Statybos pagreitis: Tarpiniai sluoksniai gali būti talpinami į talpyklą.
- Dockerfile švarumas: Skirtingi statybos etapai (kompiliacija, testavimas, paketavimas) yra logiškai atskirti.
Pavyzdys:
# Statybos etapas: programos kompiliavimas
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .
# Paleidimo etapas: programos paleidimas
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]