9.1 Debugging üçün alətlər və komandalar
Docker Compose çox konteynerli tətbiqlərin hazırlanmasını və yerləşdirilməsini xeyli asanlaşdırır, amma hər texnologiyada olduğu kimi, burada da debugging və problemləri həll etmək gərəkdir. Bu dərsdə biz Docker Compose ilə tətbiqlərin debuggingi və səhvlərin tapılması üçün əsas yanaşmalar və alətləri müzakirə edəcəyik.
Əsas problemlər və həll yanaşmaları:
- Konteynerlərin işə salınması ilə bağlı problemlər:
- Konteynerlərin açarları (logs) yoxlanışı
- Konteynerlərin statusunun yoxlanışı
- Konfiqurasiya fayllarının yoxlanışı
- Şəbəkə problemləri:
- Şəbəkə bağlantılarının yoxlanışı
- Konteynerlərin daxilində şəbəkə utilitlərindən istifadə
- Volumes ilə problemlər:
- Volumes-lərin montajının yoxlanışı
- Volumes-lərə giriş hüquqlarının yoxlanışı
Debugging üçün alətlər və komandalar:
1. Konteynerlərin loglarına baxış
Konteynerlərin logları — problemlər zamanı müraciət edilməli olan ilk yerdir. docker compose logs
komandası bütün docker-compose.yml
-də təyin edilmiş servislərin loglarına baxmağa imkan verir.
docker compose logs
Müəyyən servisin loglarına baxmaq üçün onu göstərə bilərsiniz:
docker compose logs
2. Konteynerlərin statusunun yoxlanışı
docker compose ps
komandası Docker Compose tərəfindən idarə olunan bütün konteynerlərin statusu haqqında məlumat verir.
docker compose ps
Bu komandanın nəticəsində konteynerlərin vəziyyəti, portları və ID-ləri görünür.
3. Konteynerlərin yenidən işə salınması
Əgər konteyner düzgün işləmir, onu yenidən işə salmağa cəhd edin:
docker compose restart <service_name>
4. İşləyən konteynerə qoşulmaq
Problemi daha detallı araşdırmaq üçün işləyən konteynerə docker compose exec
komandası ilə qoşula bilərsiniz.
docker compose exec <service_name> /bin/bash
Bu komanda konteyner daxilində terminal açır və diagnostik komandaları icra etməyə imkan verir
.
5. Şəbəkə utilitlərindən istifadə
Konteynerlər daxilində şəbəkə bağlantılarının yoxlanışı şəbəkə problemlərinin diaqnostikasında kömək edə bilər. Aşağıdakı utilitlərdən istifadə edə bilərsiniz, məsələn ping, curl, netcat və s.
docker compose exec <service_name> ping <hostname>
docker compose exec <service_name> curl http://<hostname>
docker compose exec <service_name> netcat -z -v <hostname>
9.2 İrəli üsullar
Xətaları tapmaq üçün əlavə üsullar
1. Docker Compose faylını yoxlama
docker-compose.yml
faylındakı xətalar konteynerlərin düzgün işləməməsinə səbəb ola bilər. Faylın sintaksisini aşağıdakı komanda ilə yoxlayın:
docker compose config
Bu komanda faylda olan xətaları yoxlayacaq və yekun konfiqurasiyanı göstərəcək.
2. Healthcheck istifadə etmək
Docker konteynerlərin vəziyyətini avtomatik yoxlamaq üçün docker-compose.yml faylında healthcheck təyin edə bilərsiniz.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
interval: 30s
timeout: 10s
retries: 3
3. Volumes montajının yoxlanması
Volumes ilə bağlı problemlər səhv montaj və ya yeterli hüquqların olmamasından qaynaqlana bilər. Volumes-lərin düzgün montaj edildiyinə və konteynerlərin onlara çıxışı olduğuna əmin olun.
version: '3.8'
services:
db:
image: postgres:latest
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
3.1 Volume əlçatanlığını yoxlamaq
Volume əlçatanlığını konteynerdə yoxlamaq üçün konteyneri işə salıb volume-nin olub-olmadığını yoxlayan bir komanda istifadə edə bilərsiniz (məsələn, volume-dəki faylların siyahısı). Tutaq ki, volume konteynerdə /mnt/volume ünvanında montaj olunub:
docker run --rm -v my_volume:/mnt/volume alpine ls /mnt/volume
Əgər volume əlçatan olarsa, ls
komandası volume-dəki fayl və direktoriyaların siyahısını göstərəcək. Əgər volume əlçatan deyilsə və ya boşdursa, uyğun bir mesaj alacaqsınız.
3.2 Volume-dəki boş yeri yoxlamaq
Konteynerdən volume-də nə qədər yerin qaldığını yoxlamaq üçün df
komandasından istifadə edin:
docker run --rm -v my_volume:/mnt/volume alpine df -h /mnt/volume
Bu komanda volume-in montaj olunduğu fayl sistemindəki əlçatan yeri göstərəcək. -h
opsiyası məlumatı oxumaq üçün uyğun formatda göstərir (MB, GB və s. kimi ölçü vahidləri ilə).
4. IDE-dən istifadə
Debug prosesini asanlaşdırmaq üçün debuq funksiyaları və logging-i olan IDE-dən istifadə edin. Siz inkişaf və istehsal üçün ayrı konfiqurasiya fayllarını yaratmaq üçün --file
parametrindən istifadə edə bilərsiniz.
docker compose --file docker-compose.dev.yml up
Vacib!
Burada IDEA vasitəsilə Docker daxilində işləyən tətbiqin uzaq debuqunu necə ayarlamaq barədə əla bir təlimat var: https://www.jetbrains.com/help/idea/run-and-debug-a-spring-boot-application-using-docker-compose.html
5. Ətraf dəyişənlərinin yoxlanması
Səhv və ya olmayan ətraf dəyişənlər problemlər yarada bilər. .env
faylında və ya birbaşa docker-compose.yml
faylında bütün lazımi dəyişənlərin müəyyən edildiyinə əmin olun.
version: '3.8'
services:
app:
image: myapp:latest
environment:
- APP_ENV=development
- DEBUG=true
9.3 Debug üçün komandaların nümunələri
Debug üçün komandaların istifadəsi nümunələri
Nümunə 1: Verilənlər bazasına qoşulma səhvinin yoxlanılması və düzəldilməsi
Web servisin loglarına baxış:
docker compose logs web
Web və db arasında şəbəkə bağlantısının yoxlanılması:
docker compose exec web ping db
docker compose exec web curl http://db:5432
Diaqnostika üçün web konteynerinə qoşulma:
docker compose exec web /bin/bash
Nümunə 2: Volume-larla bağlı problemlərin yoxlanılması
Volume-ların montajının yoxlanılması:
version: '3.8'
services:
db:
image: postgres:latest
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
db
konteynerinə qoşulma və verilənlərin yoxlanılması:
docker compose exec db /bin/bash
ls -l /var/lib/postgresql/data
GO TO FULL VERSION