Linuxguide

Docker Compose v2 – neue Features und Migration von v1 2025

Compose als Docker-Plugin: was sich geändert hat

S
SeeColors IT
11. Juni 20264 Min. Lesezeit100 Aufrufe

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.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel