Sobes.tech
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"]