diamonds-4Compose

Docker Compose ist ein Tool zur Definition und Ausführung von Multi-Container-Anwendungen. Es ist der Schlüssel für eine optimierte und effiziente Entwicklung und Bereitstellung.

Compose vereinfacht die Steuerung deines gesamten Application Stacks, indem es die Verwaltung von Diensten, Netzwerken und Volumes in einer einzigen, verständlichen YAML-Konfigurationsdatei erleichtert. Mit einem einzigen Befehl erstellst und startest du dann alle Dienste aus deiner Konfigurationsdatei.

Services

Services sind die zentralen Bausteine von Docker Compose. Jeder Service stellt eine containerisierte Anwendung oder Komponente dar.

services:
  service-name:
    # Konfiguration des Services

Images und Build

In einem Service kann der Container entweder von einem Image kommen oder aus einem Dockerfile gebildet werden.

chevron-rightImagehashtag
services:
  database:
    image: postgres:latest
chevron-rightBuildhashtag
services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile  # Dockerfile name (optional if named 'Dockerfile')
      args:
        - NODE_ENV=production
        - VERSION=1.0.0
      target: production

Konfiguration des Containers

Wir können den Container noch weiter konfigurieren.

chevron-rightNamehashtag
chevron-rightRestart Policyhashtag

Mit der Restart Policy legen wir fest, wann ein Container neugestartet werden soll.

  • no: Wird nie neugestartet

  • always: Container wird immer neugestartet, wenn er gestoppt wird

  • on-failure: Container wird nur neugestartet, wenn es einen Fehler gab

  • unless-stopped: Container wird immer neugestartet, ausser er wird manuell gestoppt

Port Mapping

Das Port Mapping kann entweder intern oder auch extern erfolgen.

chevron-rightHosthashtag
chevron-rightInternhashtag

Umgebungsvariablen

Über Umgebungsvariablen können wir beispielsweise Variablen setzen.

Abhängigkeiten

Mit dem Property depends_on können wir Abhängigkeiten zwischen den einzelnen Services definieren.

Health Checks

Netzwerke

Netzwerke ermöglichen die Kommunikation zwischen Diensten und bieten Isolierung. Docker Compose erstellt automatisch ein Standardnetzwerk, aber du kannst benutzerdefinierte Netzwerke für eine bessere Kontrolle definieren.

Standardnetzwerk

Wenn du keine Netzwerke definierst, dann macht Docker Compose Folgendes:

  1. Erstellt ein Standard-Bridge-Netzwerk mit dem Namen {project_name}_default

  2. Verbindet alle Services zu diesem Netzwerk

  3. Services können mit ihren jeweiligen Servicenamen untereinander kommunizieren

Benutzerdefiniertes Netzwerk

chevron-rightOhne Konfigurationhashtag
chevron-rightMit Konfigurationhashtag

Volumes

Volumes bieten persistenten Datenspeicher, der Neustarts und Entfernungen von Containern übersteht. Sie sind unverzichtbar für Datenbanken, Datei-Uploads, Protokolle und alle Daten, die erhalten bleiben müssen.

Secrets

Secrets bieten einen sicheren Speicher für sensible Daten wie Kennwörter, API-Schlüssel, Zertifikate und andere vertrauliche Informationen, die Container zur Laufzeit benötigen.

Beispiel

Last updated