CodeGym /Kurse /Docker SELF /Einrichtung von Netzwerken und Volumes für die Anwendung

Einrichtung von Netzwerken und Volumes für die Anwendung

Docker SELF
Level 23 , Lektion 4
Verfügbar

5.1 Netzwerke konfigurieren

Lass uns nochmal genauer anschauen, wie man Netzwerke und Volumes für unsere Multi-Container-Anwendung einrichtet. Das sorgt für eine ordentliche Kommunikation zwischen den Services und eine dauerhafte Speicherung der Daten.

Docker-Netzwerke ermöglichen den Containern, miteinander zu kommunizieren. In unserer Anwendung werden wir ein bridge-Netzwerk verwenden, um die Verbindung zwischen Frontend, Backend und der Datenbank herzustellen.

Ein Netzwerk erstellen

Wir haben das Netzwerk task-network in der Datei docker-compose.yml definiert:

Yaml

networks:
  task-network:
    driver: bridge

Wo:

  • task-network: der Name des Netzwerks, das für die Kommunikation der Container verwendet wird.
  • driver: bridge: Netzwerktyp. Das bridge-Netzwerk ist der Standardtyp für die Kommunikation von Containern auf demselben Host.

Services mit dem Netzwerk verbinden

Wir haben alle Services in der Datei docker-compose.yml mit diesem Netzwerk verbunden. Lasst uns sicherstellen, dass jeder Service korrekt verbunden ist:

Beispiel für das Frontend:

Yaml

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

Beispiel für das Backend:

Yaml

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

Beispiel für die Datenbank:

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

5.2 Volumes konfigurieren

Docker-Volumes ermöglichen es, Containerdaten auf dem Hostsystem zu speichern, um eine langfristige Speicherung sicherzustellen. In unserer Anwendung werden wir ein Volume verwenden, um die Daten der PostgreSQL-Datenbank zu speichern.

Ein Volume erstellen

Wir haben das Volume db-data bereits in der Datei compose.yaml definiert:

Yaml

volumes:
  db-data:

Wo:

  • db-data: der Name des Volumes, das zur Speicherung der PostgreSQL-Datenbankdaten verwendet wird.

Ein Volume mit dem Datenbankservice verbinden

Wir haben das Volume db-data mit dem Datenbankservice in der Datei docker-compose.yml verbunden. Stellen wir sicher, dass dies korrekt gemacht wurde:

Beispiel für die Datenbank:

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:

  • volumes: definiert, welche Volumes mit dem Container verbunden werden.
  • db-data:/var/lib/postgresql/data: verbindet das Volume db-data mit dem Verzeichnis /var/lib/postgresql/data im Container. Dieses Verzeichnis wird von PostgreSQL zur Speicherung von Daten verwendet.

5.3 Vollständige Datei compose.yaml

Zur Klarheit und Vollständigkeit geben wir die vollständige Datei compose.yaml an, die Netzwerkeinstellungen und Volumes beinhaltet:

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:

Überprüfung der Netzwerk- und Volume-Konfigurationen

Nach der Konfiguration der Netzwerke und Volumes stelle sicher, dass alles korrekt eingestellt ist und funktioniert:

  1. 1. Container starten:
    Terminal
    
    docker compose up
                
  2. 2. Netzwerk prüfen:
    • Verwende den Befehl docker network ls, um sicherzustellen, dass das Netzwerk task-network erstellt wurde.
    • Verwende den Befehl docker network inspect task-network, um zu überprüfen, dass alle Container mit diesem Netzwerk verbunden sind.
  3. 3. Volumes prüfen:
    • Verwende den Befehl docker volume ls, um sicherzustellen, dass das Volume db-data erstellt wurde.
    • Verwende den Befehl docker volume inspect db-data, um die Details des Volumes zu überprüfen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION