CodeGym /Kurslar /Docker SELF /Docker Compose-da tətbiqlərin debug edilməsi

Docker Compose-da tətbiqlərin debug edilməsi

Docker SELF
Səviyyə , Dərs
Mövcuddur

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ı:

  1. 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ışı
  2. Şəbəkə problemləri:
    • Şəbəkə bağlantılarının yoxlanışı
    • Konteynerlərin daxilində şəbəkə utilitlərindən istifadə
  3. 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.

Terminal


docker compose logs

Müəyyən servisin loglarına baxmaq üçün onu göstərə bilərsiniz:

Terminal


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.

Terminal


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:

Terminal


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.

Terminal


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.

Terminal

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:

Terminal


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.

Yaml

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.

Yaml

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:

Terminal


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:

Terminal


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.

Terminal


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.

Yaml

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ış:

Terminal


docker compose logs web

Web və db arasında şəbəkə bağlantısının yoxlanılması:

Terminal

docker compose exec web ping db
docker compose exec web curl http://db:5432

Diaqnostika üçün web konteynerinə qoşulma:

Terminal


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ı:

Yaml

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ı:

Terminal

docker compose exec db /bin/bash
ls -l /var/lib/postgresql/data
1
Опрос
Servislərin miqyaslanması,  16 уровень,  3 лекция
недоступен
Servislərin miqyaslanması
Servislərin miqyaslanması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION