Docker Schnellstart – Docker Compose

Wenn man mit mehreren Containern arbeitet, kann es schwierig sein, den Start zusammen mit der Konfiguration von Variablen und Links zu verwalten. Um dieses Problem zu lösen, hat Docker ein Tool namens Docker Compose, das die Orchestrierung, also das Starten, von Containern verwaltet.

Voraussetzung: Docker Compose installiert

Wenn du die neueste Version von Docker (z.B. Docker Desktop) bereits installiert hast, sollte Docker Compose ebenfalls installiert sein. Um auf Nummer sicher zu gehen, kannst du folgenden Befehl eingeben:

docker-compose --version

(Für den Fall, dass Docker Compose bei dir nicht installiert ist: In dieser Umgebung ist die neueste Version von Docker Compose installiert. Besuche https://docs.docker.com/compose/install/ für eine Anleitung, wie du es in deiner lokalen Umgebung installieren kannst.)

React-Anwendung mit Node.js-Backend und einer MySQL-Datenbank

Docker Compose basiert auf einer docker-compose.yml Datei. Diese Datei definiert alle Container und Einstellungen, die du brauchst, um dein Set von Clustern zu starten. Die Eigenschaften bilden ab, wie du die docker-run Befehle verwendest, werden aber nun in der Source Control gespeichert und mit deinem Code geteilt.

Das Format der Datei ist an YAML (Yet Another Markup Language) angelehnt:

container_name: 
   property:
   value:

Wir gehen davon aus, dass wir eine React-App mit Node.JS Backend und einer MySQL-Datenbank haben. Um zu starten, müssen wir unsere docker-compose.yml Datei definieren, um die Services zu starten.

(Du kannst dir das gesamte Projekt hier herunterladen)

Download - Compose Projekt

Ein Auszug der docker-compose.yml dieser Lektion:

services:
  backend:
    build: backend
    ports:
      - 80:80
      - 9229:9229
      - 9230:9230
    ...
  db:
    image: mysql:8.0.19
    ...
  frontend:
    build: frontend
    ports:
    - 3000:3000
    ...

Download - Compose Projekt

Die docker-compose.yml Datei definiert eine Anwendung mit drei Services (Frontend, Backend und db). Beim Bereitstellen der Anwendung ordnet docker-compose den Port 3000 des Frontend-Service-Containers auf Port 3000 des Hosts zu, wie in der Datei angegeben. Stelle sicher, dass Port 3000 auf dem Host (deinem Computer/Server) nicht bereits in Gebrauch ist.

App über Docker-Compose deployen

Um deine docker-compose Datei auszuführen und somit die Container bereitzustellen, musst du nur noch folgenden Befehl eingeben:

docker-compose up -d

Output (während des Build-Prozesses):

Die laufenden (Multi-)Container

Prüfe mit dem Befehl docker ps, ob alle Container korrekt laufen.

Ausgabe

Sobald alles gestartet ist, besuche http://localhost:3000 in deinem Browser. Wenn alles geklappt hat, sprich die Multi-Container Umgebung erfolgreich gestartet wurde, solltest du diese leere React-App sehen:

Docker-Container stopppen (und löschen)

Wie beim Starten der Anwendung, kannst du ein Set von Containern mit dem Befehl docker-compose stop stoppen.

Um alle Container zu stoppen und zu entfernen, verwende den Befehl docker-compose down.

Fazit zu Docker Compose

In dieser Lektion haben wir herausgefunden, wie du Docker Compose für die Orchestrierung von Multi-Container-Anwendungen nutzen kannst.