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.
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 ciBygge i det første trinnet
Byggetrinnet kompilerer eller pakker appen. Her er alle utviklingsavhengigheter og verktøy tilgjengelige.
COPY . .
RUN npm run buildEt 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_modulesFullstendig 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~ stortnode:20-slim~ mye mindrenode: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=devBruke .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
*.logMå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 myappHurtigsjekk
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 --fromtil å kopiere bare artefaktene til et slankt slutttrinn - Velg små baseimager (slim/Alpine), og installer bare produksjonsavhengigheter
- Bruk
.dockerignorefor å redusere byggkonteksten
Mindre imager bygges raskere, distribueres raskere og er sikrere.
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
- Forstå Dockerfiles
- Opprette egendefinerte Docker-images
- Imagelag og optimalisering
- Flerstegsbygg og mindre images