Images & Best Practices

Schlank & sicher bauen

Ein eigenes Image entsteht aus einem Dockerfile. Mit ein paar Prinzipien wird es klein, schnell gebaut und sicher.

Ein einfaches Dockerfile

FROM php:8.3-apache

WORKDIR /var/www/html

# Zuerst nur die Abhängigkeitsdatei kopieren und installieren …
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-scripts

# … dann den restlichen Code
COPY . .

EXPOSE 80

Warum diese Reihenfolge?

Docker baut in Schichten (Layers) und cached sie. Ändert sich eine Schicht, werden alle folgenden neu gebaut. Deshalb: Selten Geändertes (Abhängigkeiten) vor häufig Geändertes (Code) kopieren – dann bleibt der teure install-Schritt im Cache, solange sich die Abhängigkeiten nicht ändern.

Die wichtigsten Prinzipien

  • Kleine Basis-Images: -slim- oder -alpine-Varianten statt der großen Standard-Images.
  • .dockerignore pflegen: node_modules, .git, lokale Artefakte gehören nicht ins Image.
  • Versionen pinnen: php:8.3 statt php:latest – reproduzierbar statt „was gerade aktuell ist".
  • Keine Secrets ins Image: Passwörter und Tokens kommen über Umgebungsvariablen zur Laufzeit, nie in die Layer.
  • Multi-Stage-Builds: Build-Werkzeuge im Build-Stage lassen, nur das Ergebnis ins schlanke finale Image übernehmen.

Merke: Eine .dockerignore ist schnell vergessen und kostet sonst massiv – ohne sie wandert schlimmstenfalls das ganze node_modules-Verzeichnis in jedes Build.

Fazit

Docker macht Umgebungen reproduzierbar, das Onboarding schnell und die lokale Arbeit nah an Produktion. Wer die Grundlagen – Container, Compose, Volumes – verinnerlicht hat, spart im Alltag viel Zeit und Ärger.