Grunnleggende Docker og DevOps · leksjon

Flerstegsbygg og mindre images

Lær hvordan Dockerfile-filer med flere trinn lar Dem levere slanke produksjonsimages ved å skille byggeverktøy fra det endelige kjøremiljøet og dermed redusere imagestørrelsen betydelig.

Leksjon 4 av 413 trinn

Flerstegsbygg og mindre images er en gratis leksjon i Grunnleggende Docker og DevOps på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende Docker og DevOps, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Docker og DevOps inneholder totalt 4 leksjoner.

Hvorfor bildestørrelsen er viktig

Store imag er langsomme å bygge, pushe og hente, og de gir en større angrepsflate. Et godt utviklingsmål er å levere det minste imaget som fortsatt kjører appen.

Problemet med overflødig innhold

Det er ofte nødvendig med kompilatorer, avhengigheter for utvikling og bygge verktøy når en app bygges. Hvis dette blir med i det endelige imaget, vokser det kraftig i størrelse – selv om appen som kjører, ikke trenger noe av det.

Hva er et flertrinnsbygg?

Et flertrinnsbygg bruker flere FROM-setninger i én Dockerfile. Tidlige trinn bygger appen, mens det siste trinnet bare kopierer de ferdige artefaktene og lar bygge verktøyene bli igjen.

Gi et trinn et navn

Gi et trinn et navn med AS, slik at senere trinn kan referere til det.

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci

Bygge i det første trinnet

Byggetrinnet kompilerer eller pakker appen. Her er alle utviklingsavhengigheter og verktøy tilgjengelige.

COPY . .
RUN npm run build

Et slankt slutttrinn

Start det siste trinnet med et minimalt baseimage, og kopier deretter bare det appen trenger for å kjøre, ved hjelp av COPY --from.

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

Fullstendig flertrinns-Dockerfile

Når trinnene kombineres, får De et lite sluttimage som inneholder den bygde appen, men ingen av verktøyene fra byggekjeden.

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']

Velge et lite baseimage

Baseimaget er ofte den største faktoren. Slim- og Alpine-varianter gjør imagene betydelig mindre:

  • node:20 ~ stort
  • node:20-slim ~ mye mindre
  • node:20-alpine ~ minst, med minimale biblioteker

Bare produksjonsavhengigheter

Utelat utviklingsavhengigheter i runtime-imaget. Installering med produksjonsflagget holder test- og byggepakker ute.

RUN npm ci --omit=dev

Bruke .dockerignore

En .dockerignore-fil holder unødvendige filer ute av byggkonteksten, gjør byggingen raskere og hindrer utilsiktet kopiering av hemmeligheter eller enorme mapper.

node_modules
.git
.env
Dockerfile
*.log

Måle resultatet

Kontroller arbeidet ved å sjekke bildestørrelsene. Et godt bygget flertrinnsimage kan være en brøkdel av størrelsen til et naivt image med ett enkelt trinn.

docker images myapp

Hurtigsjekk

Test kunnskapene Deres om flertrinnsbygg.

Oppsummering

De har lært å levere slanke Docker-imager:

  • Flertrinnsbygg bruker flere FROM-trinn i én Dockerfile
  • Bygg i et tidlig trinn, og bruk deretter COPY --from til å kopiere bare artefaktene til et slankt slutttrinn
  • Velg små baseimager (slim/Alpine), og installer bare produksjonsavhengigheter
  • Bruk .dockerignore for å redusere byggkonteksten

Mindre imager bygges raskere, distribueres raskere og er sikrere.

Gratis å komme i gang

Lær deg Grunnleggende Docker og DevOps 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 «Flerstegsbygg og mindre images» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Docker og DevOps, inkludert «Flerstegsbygg og mindre images», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende Docker og DevOps inneholder totalt 4 leksjoner.

Hva lærer jeg i «Flerstegsbygg og mindre images»?

Lær hvordan Dockerfile-filer med flere trinn lar Dem levere slanke produksjonsimages ved å skille byggeverktøy fra det endelige kjøremiljøet og dermed redusere imagestørrelsen betydelig. Du øver på Grunnleggende Docker og DevOps 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 Grunnleggende Docker og DevOps?

Ingen tidligere erfaring er nødvendig. Grunnleggende Docker og DevOps 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 «Flerstegsbygg og mindre images»?

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 Grunnleggende Docker og DevOps-leksjonen?

Ja. Alle Grunnleggende Docker og DevOps-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. Forstå Dockerfiles
  2. Opprette egendefinerte Docker-images
  3. Imagelag og optimalisering
  4. Flerstegsbygg og mindre images
← Tilbake til Grunnleggende Docker og DevOps