5.1 Şəbəkələrin tənzimlənməsi
Gəlin daha ətraflı baxaq ki, çox konteynerli tətbiqimiz üçün şəbəkələri və həcmləri necə tənzimləyək. Bu, servislərin düzgün qarşılıqlı işləməsini və məlumatların uzunmüddətli saxlanmasını təmin edəcək.
Docker şəbəkələri konteynerlərin bir-biri ilə qarşılıqlı əlaqəsini təmin edir. Bizim tətbiqimizdə frontend, backend və verilənlər bazası arasında əlaqə üçün bridge şəbəkəsi istifadə olunacaq.
Şəbəkənin yaradılması
Artıq docker-compose.yml
faylında task-network şəbəkəsini müəyyən etmişik:
networks:
task-network:
driver: bridge
Burada:
- task-network: Konteynerlərin qarşılıqlı əlaqəsi üçün istifadə olunacaq şəbəkənin adı.
- driver: bridge: Şəbəkə növü. Bridge şəbəkəsi bir hostdakı konteynerlərin əlaqəsi üçün standartdır.
Servislərin şəbəkəyə qoşulması
Bütün servisləri docker-compose.yml
faylında bu şəbəkəyə qoşmuşuq. Hər bir servisin düzgün qoşulduğuna əmin olaq:
Frontend üçün nümunə:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Backend üçün nümunə:
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
Verilənlər bazası üçün nümunə:
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 Həcmərin sazlanması
Docker-həcmər, konteynerlərin məlumatlarını host sistemində saxlamağa və onların uzunmüddətli saxlanmasını təmin etməyə imkan verir. Tətbiqimizdə biz PostgreSQL verilənlər bazasının məlumatlarını saxlamaq üçün bir həcmdən istifadə edəcəyik.
Həcm yaratmaq
Biz artıq db-data
həcmini docker-compose.yml
faylında müəyyən etmişik:
volumes:
db-data:
Burada:
-
db-data
: PostgreSQL verilənlər bazasının məlumatlarını saxlamaq üçün istifadə ediləcək həcm adı.
Həcmın verilənlər bazası xidmətinə qoşulması
Biz db-data
həcmni verilənlər bazası xidmətinə docker-compose.yml
faylında qoşduq. Doğru edildiyini yoxlayaq:
Verilənlər bazası üçün nümunə:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
Burada:
-
volumes
: Konteynerə hansı həcmələrin qoşulacağını müəyyən edir. -
db-data:/var/lib/postgresql/data
:db-data
həcmni konteynerin içindəki/var/lib/postgresql/data
direktoriyası ilə bağlayır. Bu direktoriyadan PostgreSQL verilənlər bazası məlumatlarını saxlamaq üçün istifadə edir.
5.3 Tam docker-compose.yml
faylı
Dəqiqlik və tamlıq üçün şəbəkə və səs həcmi sazlamalarını daxil edən tam docker-compose.yml
faylını təqdim edirik:
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:
Şəbəkə və səs həcmi sazlamalarının yoxlanılması
Şəbəkə və səs həcmi sazlamalarını etdikdən sonra, hər şeyin düzgün işlədiyinə əmin olun:
- 1. Konteynerlərin işə salınması:
Terminal
docker compose up
- 2. Şəbəkənin yoxlanılması:
-
docker network ls
əmri ilətask-network
şəbəkəsinin yaradıldığını yoxlayın. -
docker network inspect task-network
əmri ilə bütün konteynerlərin həmin şəbəkəyə qoşulduğunu təsdiqləyin.
-
- 3. Səs həcminin yoxlanılması:
-
docker volume ls
əmri ilədb-data
səs həcminin yaradıldığını yoxlayın. -
docker volume inspect db-data
əmri ilə səs həcminin detalları ilə tanış olun.
-
GO TO FULL VERSION