5.1 Konfiguracja sieci
Przyjrzyjmy się jeszcze raz szczegółowo, jak skonfigurować sieci i woluminy dla naszej aplikacji wielokontenerowej. Zapewni to prawidłową komunikację między usługami i trwałe przechowywanie danych.
Sieci Docker pozwalają kontenerom komunikować się ze sobą. W naszej aplikacji będziemy używać sieci typu bridge
do połączenia frontendu, backendu i bazy danych.
Tworzenie sieci
Już zdefiniowaliśmy sieć task-network
w pliku docker-compose.yml
:
networks:
task-network:
driver: bridge
Gdzie:
- task-network: nazwa sieci, która będzie używana do komunikacji kontenerów.
- driver:
bridge
: typ sieci. Siećbridge
jest standardowym typem do komunikacji kontenerów na jednym hoście.
Połączenie usług z siecią
Połączyliśmy wszystkie usługi z tą siecią w pliku docker-compose.yml
. Upewnijmy się, że każda usługa jest prawidłowo połączona:
Przykład dla frontendu:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Przykład dla backendu:
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
Przykład dla bazy danych:
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 Konfiguracja wolumenów
Wolumeny Dockera pozwalają na przechowywanie danych kontenerów na systemie hosta, zapewniając ich długoterminowe przechowywanie. W naszej aplikacji będziemy używać wolumenu do przechowywania danych bazy danych PostgreSQL.
Tworzenie wolumenu
Już zdefiniowaliśmy wolumen db-data
w pliku compose.yaml
:
volumes:
db-data:
Gdzie:
-
db-data
: nazwa wolumenu, który będzie używany do przechowywania danych bazy danych PostgreSQL.
Podłączanie wolumenu do serwisu bazy danych
Podłączyliśmy wolumen db-data
do serwisu bazy danych w pliku docker-compose.yml
. Upewnijmy się, że zostało to poprawnie skonfigurowane:
Przykład dla bazy danych:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
Gdzie:
-
volumes
: definiuje, które wolumeny będą podłączone do kontenera. -
db-data:/var/lib/postgresql/data
: łączy wolumendb-data
z katalogiem/var/lib/postgresql/data
wewnątrz kontenera. Ten katalog jest używany przez PostgreSQL do przechowywania danych.
5.3 Cały plik compose.yaml
Dla jasności i kompletności przedstawiamy cały plik compose.yaml
, zawierający konfigurację sieci i wolumenów:
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:
Weryfikacja konfiguracji sieci i wolumenów
Po skonfigurowaniu sieci i wolumenów, upewnij się, że wszystko działa prawidłowo:
- 1. Uruchomienie kontenerów:
Terminal
docker compose up
- 2. Weryfikacja sieci:
- Użyj polecenia
docker network ls
, aby upewnić się, że siećtask-network
została utworzona. - Użyj polecenia
docker network inspect task-network
, aby sprawdzić, że wszystkie kontenery są podłączone do tej sieci.
- Użyj polecenia
- 3. Weryfikacja wolumenów:
- Użyj polecenia
docker volume ls
, aby upewnić się, że wolumendb-data
został utworzony. - Użyj polecenia
docker volume inspect db-data
, aby sprawdzić szczegóły wolumenu.
- Użyj polecenia
GO TO FULL VERSION