Docker Compose Grundlagen | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

Docker Compose Grundlagen Anleitung

Zuletzt aktualisiert: 11.01.2026 um 11:52 Uhr

Docker Compose Grundlagen

Docker Compose ermöglicht das Definieren und Ausführen von Multi-Container-Anwendungen. Mit einer YAML-Datei konfigurieren Sie alle Services, Netzwerke und Volumes.

Installation

# Docker Compose Plugin (empfohlen)
sudo apt install docker-compose-plugin -y

# Version prüfen
docker compose version

Grundlegende Syntax

# docker-compose.yml
version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: geheim
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  db_data:

Wichtige Befehle

# Container starten
docker compose up -d

# Container stoppen
docker compose down

# Logs anzeigen
docker compose logs -f

# Container neustarten
docker compose restart

# Status anzeigen
docker compose ps

# Container und Volumes löschen
docker compose down -v

Praktische Beispiele

WordPress mit MySQL

version: '3.8'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: geheim123
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: geheim123
      MYSQL_ROOT_PASSWORD: rootgeheim
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  wordpress_data:
  db_data:

Node.js mit MongoDB und Redis

version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      MONGO_URI: mongodb://mongo:27017/myapp
      REDIS_HOST: redis
    depends_on:
      - mongo
      - redis
    restart: unless-stopped

  mongo:
    image: mongo:6
    volumes:
      - mongo_data:/data/db
    restart: unless-stopped

  redis:
    image: redis:alpine
    restart: unless-stopped

volumes:
  mongo_data:

Mit Dockerfile bauen

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"

Netzwerke

version: '3.8'

services:
  frontend:
    image: nginx
    networks:
      - frontend

  backend:
    image: node
    networks:
      - frontend
      - backend

  db:
    image: postgres
    networks:
      - backend

networks:
  frontend:
  backend:

Umgebungsvariablen

# .env Datei
MYSQL_ROOT_PASSWORD=supersecret
APP_PORT=8080
# docker-compose.yml
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    ports:
      - "${APP_PORT}:80"

Health Checks

services:
  web:
    image: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

Ressourcen-Limits

services:
  app:
    image: myapp
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          memory: 256M

Nützliche Tipps

# Nur bestimmten Service starten
docker compose up -d db

# Container neu bauen
docker compose up -d --build

# Alte Container entfernen
docker compose down --remove-orphans

# Shell in Container
docker compose exec web bash

Weitere Hilfe

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120