Multistage-builds voor slanke productie-images
Beheers multistage-Dockerfiles om uw app in een buildfase te compileren of bundelen en alleen de artefacts naar een kleine runtime-image te kopiëren.
Multistage-builds voor slanke productie-images is een gratis Docker en Kubernetes voor ontwikkelaars-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Docker en Kubernetes voor ontwikkelaars. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Docker en Kubernetes voor ontwikkelaars bevat in totaal 4 lessen.
Het probleem van het te grote image
Bij een build met één fase komen compilers, ontwikkelingsafhankelijkheden en broncode vaak in productie terecht. Het resultaat is een groot image dat langzamer wordt opgehaald en een groter aanvalsoppervlak heeft.
Wat is een build met meerdere fasen
Een build met meerdere fasen gebruikt meerdere FROM-instructies in één Dockerfile. Eerdere fasen bouwen artefacten; een laatste slanke fase kopieert alleen wat nodig is om de app uit te voeren.
Een Go-voorbeeld met meerdere fasen
Compileer in een Go-image en lever daarna een piepklein eindimage met alleen het binaire bestand.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app .
FROM alpine:3.20
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Kopiëren vanuit een benoemde fase
De belangrijkste regel is COPY --from=build. Deze haalt het gecompileerde binaire bestand app uit de buildfase en laat de Go-toolchain achter.
Een Node.js-voorbeeld met meerdere fasen
Installeer en bouw met ontwikkelingsafhankelijkheden en kopieer daarna alleen de productie-uitvoer.
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/index.js"]Een slanke basis kiezen
Gebruik voor laatste fasen minimale bases zoals alpine, -slim of distroless. Kleinere bases betekenen minder pakketten en minder kwetsbaarheden.
Distroless-images
Google-distroless-images bevatten alleen je app en de runtime, zonder shell of pakketbeheerder. Ze zijn erg klein en moeilijk interactief te misbruiken.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Een specifieke fase kiezen
Je kunt alleen tot en met een benoemde fase bouwen met --target. Dat is handig om tests in CI uit te voeren.
docker build --target build -t myapp:test .Afhankelijkheden cachen
Kopieer manifesten van afhankelijkheden vóór de rest van de broncode. De installatie van afhankelijkheden wordt dan gecachet en alleen opnieuw uitgevoerd wanneer het manifest verandert.
COPY package*.json ./
RUN npm ci
COPY . .De winst meten
Vergelijk de grootte voor en na de wijziging. Builds met meerdere fasen verkleinen images vaak van honderden MB naar tientallen MB.
docker images myappCombineren met .dockerignore
Voeg een .dockerignore toe zodat de buildcontext node_modules, .git en geheimen uitsluit. Zo worden builds sneller en voorkom je dat bestanden in images lekken.
node_modules
.git
*.envKorte controle
Test wat je hebt geleerd.
Samenvatting
Je hebt geleerd Dockerfiles op te splitsen in build- en runtimefasen, alleen artefacten te kopiëren met --from, slanke of distroless-bases te kiezen, fasen te selecteren en dit te combineren met .dockerignore voor slanke productie-images.
Leer Docker en Kubernetes voor ontwikkelaars met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Multistage-builds voor slanke productie-images” gratis?
Ja — de volledige tekst van “Multistage-builds voor slanke productie-images” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Docker en Kubernetes voor ontwikkelaars wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Docker en Kubernetes voor ontwikkelaars bevat in totaal 4 lessen.
Wat leer ik in “Multistage-builds voor slanke productie-images”?
Beheers multistage-Dockerfiles om uw app in een buildfase te compileren of bundelen en alleen de artefacts naar een kleine runtime-image te kopiëren. Je oefent met Docker en Kubernetes voor ontwikkelaars door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Docker en Kubernetes voor ontwikkelaars te beginnen?
Ervaring vooraf is niet nodig. Docker en Kubernetes voor ontwikkelaars op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Multistage-builds voor slanke productie-images”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Docker en Kubernetes voor ontwikkelaars?
Ja. Elke les over Docker en Kubernetes voor ontwikkelaars bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Een webapplicatie containeriseren
- Docker-images optimaliseren
- Beveiligings- en best practices voor productie
- Multistage-builds voor slanke productie-images