Docker og Kubernetes for utviklere · leksjon

Flertrinnsbygging for slanke produksjonsimages

Bli fortrolig med flertrinns-Dockerfiler for å kompilere eller pakke appen i et byggestadium og bare kopiere artefaktene til et lite runtime-image.

Leksjon 4 av 413 trinn

Flertrinnsbygging for slanke produksjonsimages er en gratis leksjon i Docker og Kubernetes for utviklere på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Docker og Kubernetes for utviklere, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Docker og Kubernetes for utviklere inneholder totalt 4 leksjoner.

Problemet med store images

Et bygg med ett trinn inkluderer ofte kompilatorer, utviklingsavhengigheter og kildekode i produksjonen. Resultatet er et stort image som tar lengre tid å hente og har en større angrepsflate.

Hva er et bygg med flere trinn

Et bygg med flere trinn bruker flere FROM-setninger i én Dockerfile. Tidligere trinn bygger artefakter, mens et slankt sluttstadium kopierer bare det som trengs for kjøring.

Eksempel på bygg med flere trinn i Go

Kompiler i et Go-image, og lever deretter et lite slutt-image som bare inneholder binærfilen.

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"]

Kopiere fra et navngitt trinn

Nøkkellinjen er COPY --from=build. Den henter den kompilerte app-binærfilen fra byggtrinnet og lar Go-verktøykjeden bli igjen.

Eksempel på bygg med flere trinn i Node.js

Installer og bygg med utviklingsavhengigheter, og kopier deretter bare produksjonsresultatet.

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"]

Velge et slankt baseimage

Sluttstadier bør bruke minimale baseimages som alpine, -slim eller distroless. Mindre baseimages betyr færre pakker og færre sårbarheter.

Distroless-images

Googles distroless-images inneholder bare appen og kjøremiljøet, uten skall eller pakkebehandler. De er svært små og vanskelige å utnytte interaktivt.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Velge et bestemt trinn

De kan bygge bare frem til et navngitt trinn med --target, noe som er nyttig for å kjøre tester i CI.

docker build --target build -t myapp:test .

Bufre avhengigheter

Kopier manifestene for avhengigheter før resten av kildekoden. Da bufres installasjonen av avhengighetene og kjøres bare på nytt når manifestet endres.

COPY package*.json ./
RUN npm ci
COPY . .

Måle gevinsten

Sammenlign størrelsene før og etter. Bygg med flere trinn reduserer ofte images fra hundrevis av MB til titalls MB.

docker images myapp

Kombinere med .dockerignore

Legg til en .dockerignore slik at byggkonteksten utelater node_modules, .git og hemmeligheter. Det gjør byggingen raskere og hindrer at filer lekker inn i images.

node_modules
.git
*.env

Hurtigsjekk

Test det De har lært.

Oppsummering

De har lært å dele Dockerfiles inn i bygg- og kjøretidsstadier, kopiere bare artefakter med --from, velge slanke eller distroless-baseimages, målrette bestemte trinn og kombinere dette med .dockerignore for slanke produksjonsimages.

Gratis å komme i gang

Lær deg Docker og Kubernetes for utviklere med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Flertrinnsbygging for slanke produksjonsimages» gratis?

Ja – hele teksten i «Flertrinnsbygging for slanke produksjonsimages» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Docker og Kubernetes for utviklere-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Docker og Kubernetes for utviklere inneholder totalt 4 leksjoner.

Hva lærer jeg i «Flertrinnsbygging for slanke produksjonsimages»?

Bli fortrolig med flertrinns-Dockerfiler for å kompilere eller pakke appen i et byggestadium og bare kopiere artefaktene til et lite runtime-image. Du øver på Docker og Kubernetes for utviklere med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Docker og Kubernetes for utviklere?

Ingen tidligere erfaring er nødvendig. Docker og Kubernetes for utviklere på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Flertrinnsbygging for slanke produksjonsimages»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Docker og Kubernetes for utviklere-leksjonen?

Ja. Alle Docker og Kubernetes for utviklere-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Containerisere en webapplikasjon
  2. Optimalisere Docker-images
  3. Beste praksis for sikkerhet og produksjon
  4. Flertrinnsbygging for slanke produksjonsimages
← Tilbake til Docker og Kubernetes for utviklere