Multi-Stage-Builds

Docker für Fortgeschrittene

Mike Metzger

Data Engineering Consultant

Single-Stage-Builds

  • Typische Docker-Images entstehen mit einem einzigen FROM-Befehl
  • Jede Ergänzung zum Basis-Image braucht Platz und erschwert die Verwaltung
  • Denk an eine App, die vor der Nutzung kompiliert werden muss
    • Du kannst alle nötigen Komponenten ins Image packen, kompilieren und dann das finale Image konfigurieren
    • So bleiben oft überflüssige Inhalte im Image, auch wenn sie nicht genutzt werden
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker für Fortgeschrittene

Multi-Stage-Builds

  • Multi-Stage-Builds nutzen mehrere Container
  • Enthalten meist einen oder mehrere Build-Abschnitte
  • Finale Komponenten werden in ein finales Container-Image kopiert
  • Die Build-Phasen werden anschließend automatisch entfernt
    • Spart Platz und minimiert die Image-Größe
  • Verwendet zusätzliche Syntax im Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker für Fortgeschrittene

Beispiel für einen Multi-Stage-Build

# Create initial build stage
FROM ubuntu AS stage1

# Install compiler and compile code RUN apt install gcc -y ... RUN make
# Start new stage to create final image FROM alpine-base
# Copy from first stage to final COPY --from=stage1 /data_app /data_app
# Run application on container start CMD ["data_app"]
Docker für Fortgeschrittene

Lass uns üben!

Docker für Fortgeschrittene

Preparing Video For Download...