CodeGym /Kurse /Docker SELF /Einrichtung von docker-compose.yml für das Starten aller ...

Einrichtung von docker-compose.yml für das Starten aller Services

Docker SELF
Level 23 , Lektion 3
Verfügbar

4.1 Initialisierung

In diesem Schritt konfigurieren wir die Datei compose.yaml, um alle Services unserer Multi-Container-Anwendung zu starten. Die Datei compose.yaml wird Konfigurationen für das Frontend, Backend und die Datenbank sowie die Definition von Netzwerken und Volumes enthalten.

Definition der Docker Compose-Version

Wir beginnen mit der Angabe der Docker Compose-Version. In diesem Beispiel wird Version 3 verwendet:

Yaml

version: '3'

4.2 Definition der Services

Service 1: Frontend (ReactJS)

Wir definieren einen Service für das Frontend, der aus dem Verzeichnis frontend erstellt wird und unter Port 3000 verfügbar ist:

Yaml

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network

Service 2: Backend (Flask)

Wir definieren einen Service für das Backend, das aus dem Verzeichnis backend erstellt wird. Dieser Service hängt vom Datenbankservice ab und wird unter Port 5000 verfügbar sein:

Yaml

  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Wo:

  • depends_on: gibt an, dass der Backend-Service vom Datenbankservice abhängt. Das bedeutet, dass die Datenbank gestartet wird, bevor das Backend gestartet wird.
  • environment: konfiguriert Umgebungsvariablen für die Verbindung zur Datenbank.

Service 3: Database (PostgreSQL)

Wir definieren einen Service für die Datenbank und verwenden das offizielle Image postgres:13. Wir konfigurieren Umgebungsvariablen, um die Datenbank und die Benutzerdaten zu erstellen:

Yaml

  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data

Wo:

  • environment: konfiguriert Umgebungsvariablen, um die Datenbank und den Benutzer beim Starten des Containers zu erstellen.
  • volumes: bindet das Volume db-data für die dauerhafte Speicherung der Daten.

4.3 Einrichtung von Netzwerken und Volumes

Wir definieren die Netzwerke und Volumes, die von unseren Services verwendet werden:

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Wo:

  • networks: definiert das Netzwerk task-network mit dem Treibertyp bridge, das für die Kommunikation zwischen Containern verwendet wird.
  • volumes: definiert das Volume db-data zur Speicherung von Daten der Datenbank.

4.4 Komplette Datei docker-compose.yml

Jetzt fassen wir alle Teile in einer Datei docker-compose.yml zusammen:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Erklärung zu den Einstellungen

  • build: gibt den Pfad zum Verzeichnis mit Dockerfile für das Erstellen des Images an.
  • ports: öffnet Ports auf dem Host für den Zugriff auf Dienste.
  • depends_on: gibt an, dass der Dienst von einem anderen abhängt, um die Startreihenfolge sicherzustellen.
  • environment: konfiguriert Umgebungsvariablen für Dienste.
  • networks: definiert ein Netzwerk für die Kommunikation zwischen Containern.
  • volumes: definiert Volumes für die dauerhafte Speicherung von Daten.

4.5 Anwendung starten

Jetzt, da die Datei compose.yaml konfiguriert ist, können wir alle Dienste mit einem Befehl starten:

Terminal

docker compose up

Dieser Befehl erstellt und startet Container für das Frontend, Backend und die Datenbank mit den in compose.yaml definierten Einstellungen.

Überprüfung des Starts

Nach dem Starten der Container stelle sicher, dass alle Dienste korrekt funktionieren:

  1. Frontend: Öffne einen Browser und gehe zu http://localhost:3000, um das Frontend zu überprüfen.
  2. Backend: Öffne einen Browser und gehe zu http://localhost:5000, um das Backend zu überprüfen.
  3. Datenbank: Stelle sicher, dass der Datenbank-Container läuft und über die Netzanbindung mit dem Backend zugänglich ist.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION