Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Docker Multi-stage Builds

12. 09. 2025 1 Min. Lesezeit intermediate

DevOps Fortgeschritten

Docker Multi-stage Builds

DockerContainerizationOptimierung 6 Min. Lesezeit

Optimierung von Docker-Images mit Multi-Stage Builds. Kleinere Images, schnellere Deploys, sicherere Container.

Warum Multi-stage

Ein klassisches Dockerfile enthält Build-Tools auch im Produktions-Image. Multi-Stage Builds trennen die Build- und Runtime-Phase.

  • Kleineres finales Image (100 MB vs 1 GB)
  • Keine Build-Tools in der Produktion
  • Schnellerer Pull und Deploy
  • Kleinere Angriffsfläche

Beispiel: Go-Anwendung

FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/server ./cmd/server

FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /app/server /server
USER nonroot:nonroot
EXPOSE 8080
ENTRYPOINT ["/server"]

Resultierendes Image: ~10 MB statt ~800 MB mit vollem Go SDK.

Beispiel: Node.js

FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

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

FROM node:20-alpine
WORKDIR /app
RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
COPY --from=deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
USER nextjs
EXPOSE 3000
CMD ["node", "dist/main.js"]

Best Practices

  • Verwenden Sie .dockerignore — schließen Sie node_modules, .git, docs aus
  • Ordnen Sie COPY-Befehle von selten zu häufig geänderten Dateien
  • Verwenden Sie --mount=type=cache für Build-Abhängigkeits-Caching
  • Pinnen Sie Base-Image-Versionen (nicht :latest)
  • Scannen Sie das finale Image: trivy image myapp:latest

Zusammenfassung

Multi-Stage Builds sind die Grundlage moderner Containerisierung. Die Trennung von Build- und Runtime-Phase reduziert die Image-Größe drastisch und verbessert die Sicherheit.

Brauchen Sie Hilfe bei der Implementierung?

Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.

Kostenlose Beratung

Teilen:

CORE SYSTEMS Team

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.