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.
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 ciBygg i det första steget
Byggsteget kompilerar eller paketerar appen. Här finns alla utvecklingsberoenden och verktyg tillgängliga.
COPY . .
RUN npm run buildEtt 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_modulesFullstä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~ stornode:20-slim~ mycket mindrenode: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=devAnvä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
*.logMä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 myappSnabbtest
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 --fromför att endast kopiera artefakter till ett slimmat slutsteg - Välj små basimages (slim/Alpine) och installera endast produktionsberoenden
- Använd
.dockerignoreför att minska byggkontexten
Mindre images byggs snabbare, distribueras snabbare och är säkrare.
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
- Förstå Dockerfiles
- Skapa egna Docker-images
- Image-lager och optimering
- Flerstegsbyggen och mindre avbildningar