Sobes.tech
Middle

Mi az a több szakaszos build a Dockerben, és hogyan működik?

sobes.tech MI

Válasz az MI-től

Többrétegű építések lehetővé teszik több ideiglenes kép használatát a Docker építési folyamat során, hogy egy optimalizált végső képet kapjunk.

Hogyan működik:

  • Szintekre bontás: Az építési folyamat több szakaszra van osztva (FROM), mindegyik saját alapképből örököl.
  • Artefaktumok másolása: A korábbi szakaszokban létrehozott fájlokat és artefaktumokat a COPY --from=<szakasz_neve vagy száma> parancs segítségével másolják a következő szakaszokba.
  • Végső kép: A végső kép az utolsó szakasz alapján készül. Csak azok a fájlok kerülnek bele, amelyeket kifejezetten másoltak az előző szakaszokból. A közbenső rétegek és az eszközök, amelyeket korai szakaszokban fordításra vagy tesztelésre használtak, nem kerülnek bele a végső képbe.

Előnyök:

  • A kép méretének csökkentése: Csak azok a fájlok kerülnek a végső képbe, amelyekre a futtatáshoz szükség van.
  • Biztonság növelése: A build eszközök, fordítók és más potenciálisan sérülékeny összetevők nem kerülnek bele a végső képbe.
  • Gyorsabb építés: A közbenső rétegek cache-elhetők.
  • Dockerfile tisztasága: A különböző építési szakaszok (fordítás, tesztelés, csomagolás) logikusan elkülönültek.

Példa:

# Építési szakasz: az alkalmazás fordítása
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Futtatási szakasz: az alkalmazás indítása
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]