Sobes.tech
Junior — Middle

Ako implementovať viacstupňovú zostavu obrazu kontajnera?

sobes.tech AI

Odpoveď od AI

Multi-stage build v Dockeru omogoča ustvarjanje več faz gradnje v eni Dockerfile, kar pomaga zmanjšati velikost končnega slike in ločiti faze kompilacije od faze zagona.

Glavna ideja je uporaba več ukazov FROM v eni Dockerfile, kjer lahko vsaka faza uporablja artefakte prejšnjih faz.

Primer:

# Faza gradnje
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Končna slika
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Tukaj najprej zgradimo aplikacijo v Go, nato pa v končni sliki kopiramo samo prevedeni binarni datoteko, brez izvornih datotek in orodij za gradnjo.