CodeGym /Kursy /Docker SELF /Debugowanie aplikacji w Docker Compose

Debugowanie aplikacji w Docker Compose

Docker SELF
Poziom 16 , Lekcja 3
Dostępny

9.1 Narzędzia i polecenia do debugowania

Docker Compose znacznie upraszcza rozwój i wdrażanie aplikacji wielokontenerowych, ale, jak w przypadku każdej technologii, mogą wystąpić problemy wymagające debugowania i naprawy. W tym wykładzie przeanalizujemy podstawowe podejścia i narzędzia do szukania błędów i debugowania aplikacji w Docker Compose.

Podstawowe problemy i podejścia do ich rozwiązania:

  1. Problemy z uruchamianiem kontenerów:
    • Sprawdzanie logów kontenerów.
    • Sprawdzanie statusu kontenerów.
    • Sprawdzanie plików konfiguracyjnych.
  2. Problemy sieciowe:
    • Sprawdzanie połączeń sieciowych.
    • Używanie narzędzi sieciowych wewnątrz kontenerów.
  3. Problemy z wolumenami:
    • Sprawdzanie montowania wolumenów.
    • Sprawdzanie praw dostępu do wolumenów.

Narzędzia i polecenia do debugowania:

1. Podgląd logów kontenerów

Logi kontenerów to pierwsze miejsce, które należy sprawdzić w przypadku wystąpienia problemów. Polecenie docker compose logs pozwala przeglądać logi wszystkich usług zdefiniowanych w compose.yaml.

Terminal

docker compose logs

Możesz wskazać konkretną usługę, aby zobaczyć tylko jej logi:

Terminal

docker compose logs <service_name>

2. Sprawdzanie statusu kontenerów

Polecenie docker compose ps wyświetla informacje o statusie wszystkich kontenerów zarządzanych przez Docker Compose.

Terminal

docker compose ps

Wynik tego polecenia pokaże stan, porty i identyfikatory kontenerów.

3. Ponowne uruchamianie kontenerów

Jeśli kontener działa nieprawidłowo, spróbuj go zrestartować:

Terminal

docker compose restart <service_name>

4. Połączenie z działającym kontenerem

Aby bardziej szczegółowo przeanalizować problem, możesz połączyć się z działającym kontenerem za pomocą polecenia docker compose exec.

Terminal

docker compose exec <service_name> /bin/bash

To polecenie otworzy terminal wewnątrz kontenera, co pozwoli na uruchamianie poleceń diagnostycznych.

5. Używanie narzędzi sieciowych

Sprawdzanie połączeń sieciowych wewnątrz kontenerów może pomóc w diagnostyce problemów z siecią. Możesz użyć narzędzi takich jak ping, curl, netcat i inne.

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> <port>

9.2 Zaawansowane podejścia

Dodatkowe podejścia do znajdowania błędów

1. Sprawdzanie pliku Docker Compose

Błędy w pliku compose.yaml mogą prowadzić do nieprawidłowego działania kontenerów. Sprawdź składnię pliku za pomocą komendy:

Terminal

docker compose config

Ta komenda sprawdzi plik pod kątem błędów i wyświetli końcową konfigurację.

2. Użycie Healthcheck

Możesz określić healthcheck dla usług w compose.yaml, aby Docker automatycznie sprawdzał stan kontenerów.

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. Sprawdzanie montowania woluminów

Problemy z woluminami mogą wystąpić z powodu nieprawidłowego montowania lub niewystarczających uprawnień. Upewnij się, że woluminy są poprawnie zamontowane i kontenery mają do nich dostęp.

Yaml

version: '3.8'

services:
  db:
    image: postgres:latest
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

3.1 Sprawdzanie dostępności woluminu

Aby sprawdzić dostępność woluminu z kontenera, możesz uruchomić kontener i wykonać polecenie, które sprawdzi obecność woluminu (np. lista plików w woluminie). Przyjmijmy, że wolumin jest zamontowany w kontenerze pod ścieżką /mnt/volume:

Terminal

docker run --rm -v my_volume:/mnt/volume alpine ls /mnt/volume

Jeśli wolumin jest dostępny, komenda ls wyświetli listę plików i katalogów znajdujących się w woluminie. Jeśli wolumin jest niedostępny lub pusty, otrzymasz odpowiednią wiadomość.

3.2 Sprawdzanie dostępnej przestrzeni w woluminie

Aby sprawdzić, ile miejsca jest dostępnego na woluminie z wnętrza kontenera, użyj polecenia df:

Terminal

docker run --rm -v my_volume:/mnt/volume alpine df -h /mnt/volume

Wyświetla ono dostępną przestrzeń na systemie plików, gdzie wolumin jest zamontowany. Opcja -h wyświetla informacje w formacie łatwym do odczytania (z jednostkami, takimi jak MB, GB itd.).

4. Użycie IDE

Aby uprościć debugowanie, używaj IDE z włączonymi funkcjami debugowania i logowania. Możesz tworzyć osobne pliki konfiguracyjne dla środowiska developerskiego i produkcyjnego, używając parametru --file.

Terminal

docker compose --file docker-compose.dev.yml up

Ważne! Tutaj znajduje się przydatna instrukcja dotycząca konfiguracji zdalnego debugowania aplikacji uruchomionej wewnątrz Dockera, przez IntelliJ IDEA: Konfiguracja zdalnego debugowania .

5. Sprawdzanie zmiennych środowiska

Nieprawidłowe lub brakujące zmienne środowiska mogą powodować problemy. Upewnij się, że wszystkie wymagane zmienne są ustawione w pliku .env lub bezpośrednio w compose.yaml.

Yaml

version: '3.8'

services:
  app:
    image: myapp:latest
    environment:
      - APP_ENV=development
      - DEBUG=true

9.3 Przykłady poleceń do debugowania

Przykłady użycia poleceń do debugowania

Przykład 1: Sprawdzanie i naprawianie błędu połączenia z bazą danych

Przegląd logów serwisu web:

Terminal

docker compose logs web

Sprawdzanie połączenia sieciowego między web i db:

Terminal

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

Połączenie do kontenera web w celu diagnostyki:

Terminal

docker compose exec web /bin/bash

Przykład 2: Sprawdzanie problemów z wolumenami

Sprawdzanie montowania wolumenów:

Yaml

version: '3.8'

services:
  db:
    image: postgres:latest
    volumes:
      - db-data:/var/lib/postgresql/data
    
volumes:
  db-data:

Połączenie do kontenera db i sprawdzanie danych:

Terminal

docker compose exec db /bin/bash
ls -l /var/lib/postgresql/data
1
Опрос
Skalowanie usług,  16 уровень,  3 лекция
недоступен
Skalowanie usług
Skalowanie usług
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION