
Hör auf, Docker zu benutzen wie in 2015

Docker ist erwachsen geworden. Bist Du es auch?
2015 war Docker noch neu und aufregend. Wahrscheinlich hast Du deinen ersten Container so gestartet:
docker run -it ubuntu bash
Du hast dich mächtig gefühlt. Vim im Container installiert. Vielleicht sogar Node.js. Kein .dockerignore
genutzt. Alles als root laufen lassen. Dachtetest, du würdest Container deployen – in Wahrheit hast du aber nur eine komische Art VM gebaut.
Springen wir ins Jahr 2025: Dieselbe Herangehensweise hält dich inzwischen zurück. Docker ist heute schnell, modular und absolut production geeignet – wenn Du es RICHTIG benutzt.
Lass uns mal die Gewohnheiten anschauen, die du ablegen solltest – und wie man’s 2025 macht.
❗️ Die alten Docker-Gewohnheiten, die weg müssen
1. Das version:
-Feld im docker-compose.yml
benutzen
Das version:
-Feld in Docker Compose Files ist noch veralteter als Bootstrap CSS. Schreibst du das immer noch? Warum? Jedes Mal, wenn du das tust, weint ein Wal. Fang einfach mit deinem services:
-Block an und leb weiter. Ja, mich nervt’s wirklich.
2. Keine Healthchecks
Wenn dein Container abschmiert und Du hast keinen Healthcheck konfiguriert, selbst schuld. Docker und Compose können nichts neustarten oder verwalten, wenn sie nicht mal merken dass was kaputt ist.
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
Allein dieser kleine Change macht Docker Compose ernsthaft production-fähig. Kein Witz.
3. Alles als root laufen lassen
Läuft bei dir im Produktivsystem noch alles als root? Das ist ein Sicherheitsrisiko sondergleichen. Leg lieber in deinem Dockerfile einen eigenen User an und nutze den. Ist echt kein Hexenwerk:
RUN useradd -m appuser
USER appuser
Achte nur darauf, dass deine Volumes dem neuen User gehören, sonst geht’s schief (ich spreche aus Erfahrung 🙃).
4. Kein .dockerignore
genutzt
Nichts ist schlimmer als dein .git
, dein .env
und die ganzen node_modules
nach Production zu shippen. Leg endlich eine .dockerignore
an, spar Build-Zeit und halte geheimen Kram und unnötigen Ballast aus deinem Image raus.
Klingt wie ein No-Brainer, aber ich seh’s ständig :(
5. Überladene, Single-Stage Dockerfiles
Wenn dein Dockerfile Build-Tools, Compiler und Test-Abhängigkeiten ins finale Image packt – bitte aufhören. Nutze Multi-Stage Builds!
FROM node:20 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
CMD ["node", "dist/index.js"]
6. Manuelle Builds ohne Cache
Tippst du immer noch jedes Mal stumpf docker build .
?
Stell DOCKER_BUILDKIT=1
ein, nutze Layer-Caching und gönn dir Entspannung! Mit --mount=type=cache
für Paketmanager und Build-Systeme geht’s noch schneller – und smarter.
📈 So sieht modernes Docker heute aus
Compose ohne Altlasten
services:
app:
build: .
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 5s
retries: 3
user: "1000:1000"
Devcontainer, Watch-Mode & du
- Mit
docker compose watch
bekommst du Live-Reload im Local Dev - Bind-Mount Volumes + Hot Reload = schnelles Entwicklungs-Feedback
.dockerignore
+ Caching = minimale Rebuilds
develop:
watch:
- path: .
action: rebuild
Die “Docker ist nicht production-ready!”-Fraktion
Docker ist nicht schuld. Du bist es.
Du hast keine Healthchecks gesetzt – also kann Docker auch nichts neustarten. Du nutzt keine Multi-Stage Builds – daher besteht dein Image aus 2GB Müll. Du hast alles als root laufen – jetzt hast du vor deinem eigenen Stack Angst.
Docker KANN Production – aber nur, wenn du's auch wie ein Production-Tool behandelst.
An die “Docker ist schlecht für Local Dev!”-Leute
Auch falsch! Wahrscheinlich nutzt du es einfach nur nicht richtig. Das hilft:
docker compose watch
= Live-Rebuilds- BuildKit Cache Mounts = ultraschnelle Builds
- Bind Volumes + Hot Reload = native Dev-Experience
Wenn du 2 Minuten auf jeden Build wartest oder Logs noch über docker logs -f
checkst – Sorry, das liegt an dir, nicht an Docker.
TL;DR: Hör auf, Docker zu nutzen wie 2015
Docker ist kein Spielzeug mehr. Es ist ein modernes, battle-erprobtes Tool für Entwicklung und Productiveinsatz – du musst nur aufhören, es wie vor 10 Jahren zu nutzen.
Lass das version:
-Feld weg. Pack Healthchecks dazu. Nutze BuildKit. Lerne Caching. Arbeite mit non-root Usern. Und schieb nicht immer alles auf das Tool.
Und bitte, um der Wale Willen: mach eine .dockerignore
!
Alte Docker-Gewohnheit, die du ablegen musstest? Erzähl’s in den Kommentaren. Lass uns die 2015-Vibes gemeinsam begraben.
Cheers,
Jonas Co-Founder sliplane.io