0Pricing
Docker & DevOps Fundamentals · Lektion

Multi-Stage-Builds und kleinere Images

Lernen Sie, wie Multi-Stage-Dockerfiles schlanke Produktions-Images ermöglichen, indem Build-Tools vom finalen Laufzeitsystem getrennt werden und sich die Image-Größe dadurch deutlich reduziert.

Multi-Stage-Builds und kleinere Images ist eine kostenlose Docker & DevOps Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Docker & DevOps Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Warum die Image-Größe wichtig ist

Große Images lassen sich langsamer erstellen, übertragen und herunterladen und bieten eine größere Angriffsfläche. Ein gutes Ziel beim Engineering ist, das kleinstmögliche Image auszuliefern, mit dem Ihre App noch ausgeführt werden kann.

Das Problem unnötiger Größe

Für den Build einer App werden häufig Compiler, Entwicklungsabhängigkeiten und Build-Tools benötigt. Wenn diese im finalen Image landen, wächst es stark an – obwohl die laufende App nichts davon benötigt.

Was ist ein Multi-Stage-Build?

Ein Multi-Stage-Build verwendet mehrere FROM-Anweisungen in einer Dockerfile. In den frühen Stages wird die App erstellt; die finale Stage kopiert nur die fertigen Artefakte und lässt die Build-Tools zurück.

Eine Stage benennen

Geben Sie einer Stage mit AS einen Namen, damit spätere Stages darauf verweisen können.

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

In der ersten Stage erstellen

In der Build-Stage wird Ihre App kompiliert oder gebündelt. Hier stehen alle Entwicklungsabhängigkeiten und Werkzeuge zur Verfügung.

COPY . .
RUN npm run build

Eine schlanke finale Stage

Starten Sie die finale Stage mit einem minimalen Basis-Image und kopieren Sie anschließend mit COPY --from nur das, was die App zur Ausführung benötigt.

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

Vollständige Multi-Stage-Dockerfile

Durch das Zusammenführen der Stages entsteht ein kleines finales Image, das die erstellte App, aber keine Build-Toolchain enthält.

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

Ein kleines Basis-Image auswählen

Das Basis-Image ist häufig der wichtigste Faktor. Slim- und Alpine-Varianten reduzieren die Image-Größe erheblich:

  • node:20 ~ groß
  • node:20-slim ~ deutlich kleiner
  • node:20-alpine ~ am kleinsten, minimale Bibliotheken

Nur Produktionsabhängigkeiten

Lassen Sie Entwicklungsabhängigkeiten aus dem Runtime-Image weg. Durch die Installation mit dem Produktions-Flag bleiben Test- und Build-Pakete außen vor.

RUN npm ci --omit=dev

.dockerignore verwenden

Eine .dockerignore-Datei hält überflüssige Dateien aus dem Build-Kontext heraus, beschleunigt Builds und verhindert, dass versehentlich Geheimnisse oder sehr große Ordner kopiert werden.

node_modules
.git
.env
Dockerfile
*.log

Das Ergebnis messen

Überprüfen Sie Ihre Arbeit, indem Sie die Image-Größen kontrollieren. Ein gut erstelltes Multi-Stage-Image kann nur einen Bruchteil der Größe eines naiven Single-Stage-Images haben.

docker images myapp

Kurze Überprüfung

Testen Sie Ihr Wissen über Multi-Stage-Builds.

Zusammenfassung

Sie haben gelernt, schlanke Docker-Images auszuliefern:

  • Multi-Stage-Builds verwenden mehrere FROM-Stages in einer Dockerfile
  • Erstellen Sie die App in einer frühen Stage und kopieren Sie anschließend mit COPY --from nur die Artefakte in eine schlanke finale Stage
  • Wählen Sie kleine Basis-Images (Slim/Alpine) und installieren Sie nur Produktionsabhängigkeiten
  • Verwenden Sie .dockerignore, um den Build-Kontext zu verkleinern

Kleinere Images werden schneller erstellt, schneller bereitgestellt und sind sicherer.

Häufig gestellte Fragen

Ist die Lektion „Multi-Stage-Builds und kleinere Images“ kostenlos?

Ja — der vollständige Text von „Multi-Stage-Builds und kleinere Images“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Docker & DevOps Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Multi-Stage-Builds und kleinere Images“?

Lernen Sie, wie Multi-Stage-Dockerfiles schlanke Produktions-Images ermöglichen, indem Build-Tools vom finalen Laufzeitsystem getrennt werden und sich die Image-Größe dadurch deutlich reduziert. Du übst Docker & DevOps Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Docker & DevOps Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Docker & DevOps Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Multi-Stage-Builds und kleinere Images“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Docker & DevOps Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Docker & DevOps Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Dockerfiles verstehen
  2. Benutzerdefinierte Docker-Images erstellen
  3. Image-Ebenen und Optimierung
  4. Multi-Stage-Builds und kleinere Images
← Zurück zu Docker & DevOps Fundamentals