v1 vs. v2 – Was hat sich geändert?
| Merkmal | v1 (docker-compose) | v2 (docker compose) |
|---|---|---|
| Sprache | Python | Go |
| Installation | Separat (pip) | Docker Plugin |
| Befehl | docker-compose |
docker compose (Leerzeichen!) |
| Performance | Langsamer | Schneller |
| Status | End of Life | Aktiv entwickelt |
Migration: Ersetzen Sie docker-compose durch docker compose in Scripts und Aliases – die meisten Compose-Dateien funktionieren unverändert.
Installation prüfen
docker compose version
# Docker Compose version v2.x.x
# Alias für v1-Nutzer (optional)
echo 'alias docker-compose="docker compose"' >> ~/.bashrc
Neue Features in v2
1. Profiles – Services selektiv starten
services:
app:
image: myapp:latest
# Kein Profil = immer gestartet
db:
image: postgres:16
# Kein Profil = immer gestartet
adminer:
image: adminer
profiles: ["tools"] # Nur mit --profile tools
mailhog:
image: mailhog/mailhog
profiles: ["tools", "dev"]
# Standard: app + db
docker compose up -d
# Mit Tools-Services
docker compose --profile tools up -d
# Nur ein bestimmter Service
docker compose up -d app
2. depends_on Conditions (v2)
services:
api:
depends_on:
db:
condition: service_healthy
restart: true # NEU: api bei DB-Neustart ebenfalls neustarten
db:
image: postgres:16
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 5s
retries: 10
3. Compose Files zusammenführen (Merge)
# Basis-Config + Überschreibung zusammenführen
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# docker-compose.prod.yml – überschreibt nur was nötig ist
services:
app:
environment:
NODE_ENV: production
deploy:
replicas: 3
4. Extend Services
# docker-compose.yml
services:
base-service:
image: node:20-alpine
working_dir: /app
volumes:
- .:/app
frontend:
extends:
service: base-service
command: npm run dev:frontend
ports:
- "3000:3000"
backend:
extends:
service: base-service
command: npm run dev:backend
ports:
- "4000:4000"
5. Service-Watch (Dateisynchronisation)
services:
app:
image: node:20-alpine
develop:
watch:
- action: sync
path: ./src
target: /app/src
- action: rebuild
path: package.json
docker compose watch # Neu in Compose v2.22+
Änderungen in ./src werden sofort in den Container synchronisiert – wie ein Dev-Hot-Reload für beliebige Apps.
Compose Variables
# docker-compose.yml
services:
app:
image: myapp:${APP_VERSION:-latest}
environment:
- NODE_ENV=${NODE_ENV:-development}
# .env Datei (automatisch geladen)
APP_VERSION=1.5.0
NODE_ENV=production
FAQ
Muss ich version: noch in Compose-Dateien angeben?
Nein. In Compose v2 ist das version:-Feld veraltet und kann weggelassen werden.
Funktionieren alte v1-Compose-Dateien mit v2?
Ja, in den meisten Fällen. Einige v1-spezifische Syntax-Elemente wurden entfernt.
Fazit
Docker Compose v2 ist schneller, hat mehr Features und ist die Zukunft. Die Migration von v1 ist minimal – meist reicht ein Alias.
Docker-Beratung für Teams in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.