DevOps-bootcamp · Lektion

Flerstegsbyggen och mindre avbildningar

Lär dig hur Dockerfiles med flera steg kan leverera slimmade produktionsavbildningar genom att separera byggverktyg från den slutliga körmiljön, vilket kraftigt minskar avbildningens storlek.

Lektion 4 av 413 steg

Flerstegsbyggen och mindre avbildningar är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Varför image-storleken spelar roll

Stora images tar längre tid att bygga, skicka och hämta, och de har en större attackyta. Ett bra tekniskt mål är att leverera den minsta image som fortfarande kan köra er app.

Problemet med överflödigt innehåll

Att bygga en app kräver ofta kompilatorer, utvecklingsberoenden och byggverktyg. Om dessa hamnar i den slutliga imagen blir den mycket större, trots att den körande appen inte behöver något av dem.

Vad är ett bygge i flera steg?

Ett bygge i flera steg använder flera FROM-satser i en Dockerfile. Tidiga steg bygger appen och det sista steget kopierar endast de färdiga artefakterna, så att byggverktygen lämnas kvar.

Namnge ett steg

Ge ett steg ett namn med AS så att senare steg kan hänvisa till det.

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

Bygg i det första steget

Byggsteget kompilerar eller paketerar appen. Här finns alla utvecklingsberoenden och verktyg tillgängliga.

COPY . .
RUN npm run build

Ett slimmat slutsteg

Starta det sista steget från en minimal basimage och kopiera sedan endast det som appen behöver för att köras med COPY --from.

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

Fullständig Dockerfile i flera steg

Genom att kombinera stegen får ni en liten slutlig image som innehåller den byggda appen, men inga byggverktyg.

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

Välj en liten basimage

Basimagen är ofta den viktigaste faktorn. Slim- och Alpine-varianter minskar image-storleken avsevärt:

  • node:20 ~ stor
  • node:20-slim ~ mycket mindre
  • node:20-alpine ~ minst, med minimala bibliotek

Endast produktionsberoenden

Hoppa över utvecklingsberoenden i runtime-imagen. Om ni installerar med produktionsflaggan hålls test- och byggpaket utanför.

RUN npm ci --omit=dev

Använd .dockerignore

En .dockerignore-fil håller skräp borta från byggkontexten, snabbar upp byggen och förhindrar oavsiktlig kopiering av hemligheter eller mycket stora kataloger.

node_modules
.git
.env
Dockerfile
*.log

Mät resultatet

Verifiera arbetet genom att kontrollera image-storlekarna. En välbyggd image i flera steg kan vara betydligt mindre än en naiv image i ett enda steg.

docker images myapp

Snabbtest

Testa era kunskaper om byggen i flera steg.

Sammanfattning

Ni har lärt er att leverera slimmade Docker-images:

  • Byggen i flera steg använder flera FROM-steg i en Dockerfile
  • Bygg i ett tidigt steg och använd sedan COPY --from för att endast kopiera artefakter till ett slimmat slutsteg
  • Välj små basimages (slim/Alpine) och installera endast produktionsberoenden
  • Använd .dockerignore för att minska byggkontexten

Mindre images byggs snabbare, distribueras snabbare och är säkrare.

Gratis att börja

Lär dig DevOps-bootcamp med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
142
Lektioner
568

Vanliga frågor

Är lektionen ”Flerstegsbyggen och mindre avbildningar” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Flerstegsbyggen och mindre avbildningar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.

Vad lär jag mig i ”Flerstegsbyggen och mindre avbildningar”?

Lär dig hur Dockerfiles med flera steg kan leverera slimmade produktionsavbildningar genom att separera byggverktyg från den slutliga körmiljön, vilket kraftigt minskar avbildningens storlek. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?

Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Flerstegsbyggen och mindre avbildningar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?

Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Förstå Dockerfiles
  2. Skapa egna Docker-images
  3. Image-lager och optimering
  4. Flerstegsbyggen och mindre avbildningar
← Tillbaka till DevOps-bootcamp