4.1 Başlanğıc
Bu addımda biz docker-compose.yml
faylını bütün servisləri işə salmaq üçün konfiqurasiya edəcəyik. docker-compose.yml
faylı frontend, backend və verilənlər bazası üçün parametrləri, həmçinin şəbəkələr və həcm təyinatını əhatə edəcək.
Docker Compose versiyasının təyini
Docker Compose versiyasını təyin etməklə başlayırıq. Bu nümunədə biz 3-cü versiyadan istifadə edirik:
version: '3'
4.2. Servislərin müəyyən edilməsi
Servis 1: Frontend (ReactJS)
Frontend üçün bir servis müəyyən edəcəyik ki, bu frontend qovluğundan yığılacaq və 3000 portunda əlçatan olacaq:
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Servis 2: Backend (Flask)
Backend üçün bir servis müəyyən edəcəyik ki, bu backend qovluğundan yığılacaq, database servisinə asılı olacaq və 5000 portunda əlçatan olacaq:
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
Burada:
- depends_on: Göstərir ki, backend servisi database servisinə asılıdır, buna görə də backend işə salınmadan öncə database işə salınacaq.
- environment: Databasə-ə qoşulmaq üçün mühit dəyişənlərini qurur.
Servis 3: Database (PostgreSQL)
PostgreSQL-nun rəsmi postgres:13 imicindən istifadə edərək database üçün bir servis müəyyən edəcəyik. Database yaratmaq və istifadəçi məlumatları üçün mühit dəyişənlərini quracağıq:
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:
-
environment
: Konteyner işə salınarkən databasə və istifadəçi yaratmaq üçün mühit dəyişənlərini qurur. -
volumes
: Məlumatların daimi saxlanılması üçün db-data volumundan istifadə edir.
4.3 Şəbəkələrin və həcmələrin qurulması
Servislərimiz tərəfindən istifadə olunacaq şəbəkələri və həcmələri təyin edək:
networks:
task-network:
driver: bridge
volumes:
db-data:
Burada:
- networks: task-network adlı şəbəkəni driver növü bridge olaraq təyin edir, hansı ki konteynerlər arasında əlaqə üçün istifadə olunacaq.
- volumes: Verilənlər bazasının məlumatlarını saxlamaq üçün db-data həcmini təyin edir.
4.4 Bütöv docker-compose.yml
faylı
İndi bütün hissələri bir faylda docker-compose.yml
birləşdiririk:
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:
Ayarların izahı
-
build
: İmage yaratmaq üçün Dockerfile-ın yerləşdiyi qovluğu göstərir. -
ports
: Servislərə giriş üçün host portlarını açır. depends_on
: Servislərin başlama sırasını təmin edir.-
environment
: Servislər üçün ətraf mühit dəyişənlərini tənzimləyir. -
networks
: Konteynerlərin bir-birilə əlaqəsi üçün şəbəkələri müəyyən edir. -
volumes
: Data daimi saxlanması üçün volume müəyyən edir.
4.5 Tətbiqin işə salınması
İndi docker-compose.yml
faylı tənzimlənəndən sonra, bütün xidmətləri bir komandadan istifadə edərək işə sala bilərik:
docker compose up
Bu komanda frontend, backend və verilənlər bazası üçün konteynerləri yaradacaq və işə salacaq, docker-compose.yml
faylında təyin olunmuş tənzimləmələrdən istifadə edərək.
İşə salmanı yoxlamaq
Konteynerləri işə salandan sonra, bütün xidmətlərin düzgün işlədiyinə əmin olun:
- Frontend: Brauzeri açın və frontend-in işlədiyini yoxlamaq üçün bu ünvana keçin: http://localhost:3000.
- Backend: Brauzeri açın və backend-in işlədiyini yoxlamaq üçün bu ünvana keçin: http://localhost:5000.
- Database: Verilənlər bazası konteynerinin işlədiyinə və backend ilə şəbəkə əlaqəsindən keçərək əlçatan olduğuna əmin olun.
GO TO FULL VERSION