Middle
Co jsou vícestupňové sestavení v Dockeru a jak fungují?
sobes.tech AI
Odpověď od AI
Vícefázové sestavení umožňuje používat během procesu sestavení Docker více dočasných obrazů, aby bylo možné získat konečný, optimalizovaný obraz.
Jak to funguje:
- Rozdělení do etap: Proces sestavení je rozdělen do několika etap (
FROM), z nichž každá dědí ze svého vlastního základního obrazu. - Kopírování artefaktů: Soubory a artefakty vytvořené v předchozích etapách jsou kopírovány do následujících pomocí příkazu
COPY --from=<název_etapy nebo číslo>. - Konečný obraz: Konečný obraz je vytvořen na základě poslední etapy. Obsahuje pouze soubory, které byly explicitně zkopírovány z předchozích etap. Mezipatrové vrstvy a nástroje používané v raných etapách pro kompilaci nebo testování nejsou zahrnuty do konečného obrazu.
Výhody:
- Zmenšení velikosti obrazu: Do konečného obrazu jsou zahrnuty pouze soubory potřebné k spuštění aplikace.
- Zlepšení bezpečnosti: Nástroje pro sestavení, překladače a další potenciálně zranitelné komponenty nejsou zahrnuty do konečného obrazu.
- Zrychlení sestavení: Mezipatrové vrstvy mohou být ukládány do cache.
- Čistota Dockerfile: Různé fáze sestavení (kompilace, testování, balení) jsou logicky oddělené.
Příklad:
# Fáze sestavení: kompilace aplikace
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .
# Fáze spuštění: spuštění aplikace
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]