Docker en Kubernetes voor ontwikkelaars · Les

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.

Les 4 van 413 stappen

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 myapp

Combineren 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
*.env

Korte 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.

Gratis beginnen

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

  1. Een webapplicatie containeriseren
  2. Docker-images optimaliseren
  3. Beveiligings- en best practices voor productie
  4. Multistage-builds voor slanke productie-images
← Terug naar Docker en Kubernetes voor ontwikkelaars