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:
networks:
task-network:
driver: bridge
Wo:
- task-network: der Name des Netzwerks, das für die Kommunikation der Container verwendet wird.
- driver:
bridge: Netzwerktyp. Dasbridge-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:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Beispiel für das Backend:
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:
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:
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:
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 Volumedb-datamit dem Verzeichnis/var/lib/postgresql/dataim 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:
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. Container starten:
Terminal
docker compose up - 2. Netzwerk prüfen:
- Verwende den Befehl
docker network ls, um sicherzustellen, dass das Netzwerktask-networkerstellt wurde. - Verwende den Befehl
docker network inspect task-network, um zu überprüfen, dass alle Container mit diesem Netzwerk verbunden sind.
- Verwende den Befehl
- 3. Volumes prüfen:
- Verwende den Befehl
docker volume ls, um sicherzustellen, dass das Volumedb-dataerstellt wurde. - Verwende den Befehl
docker volume inspect db-data, um die Details des Volumes zu überprüfen.
- Verwende den Befehl
GO TO FULL VERSION