Multi-stage build
Een Dockerfile-techniek met meerdere fases: je bouwt en compileert in een zware buildfase en kopieert alleen het eindproduct naar een schone, minimale eindfase. Resultaat: een kleine, veilige productie-image zonder buildtools en broncode.
Het probleem: bouwen vraagt compilers, buildtools en dependencies, maar niets daarvan is nodig (of hoort aanwezig te zijn) in productie, waar het de image alleen opblaast en het aanvalsoppervlak vergroot. Multi-stage lost dat op: een eerste fase (bijvoorbeeld FROM golang AS build) compileert; een tweede, minimale fase (FROM alpine of distroless) doet alleen COPY --from=build van de binary. Alle rommel van het bouwen blijft achter in de buildfase en belandt nooit in de eindimage. Voordeel: drastisch kleinere images (een Go-app kan van ca. 800 MB naar ca. 10 MB), minder aanvalsoppervlak (geen compiler of shell om te misbruiken) en geen lekkende broncode of geheimen uit het bouwproces. Tegenwoordig standaardpraktijk voor productiecontainers, vaak samen met een distroless-basis.