CodeGym /Cours /Docker SELF /Débogage des applications dans Docker Compose

Débogage des applications dans Docker Compose

Docker SELF
Niveau 16 , Leçon 3
Disponible

9.1 Outils et commandes pour le débogage

Docker Compose simplifie grandement le développement et le déploiement des applications multi-conteneurs, mais comme avec toute technologie, des problèmes peuvent survenir nécessitant un débogage et une résolution. Dans cette leçon, on va voir les approches et outils principaux pour identifier et résoudre les erreurs dans Docker Compose.

Problèmes principaux et approches pour les résoudre :

  1. Problèmes avec le démarrage des conteneurs :
    • Vérification des logs des conteneurs.
    • Vérification de l'état des conteneurs.
    • Vérification des fichiers de configuration.
  2. Problèmes de réseau :
    • Vérification des connexions réseau.
    • Utilisation des outils réseau à l'intérieur des conteneurs.
  3. Problèmes avec les volumes :
    • Vérification du montage des volumes.
    • Vérification des droits d'accès aux volumes.

Outils et commandes pour le débogage :

1. Afficher les logs des conteneurs

Les logs des conteneurs, c'est le premier endroit où chercher en cas de problème. La commande docker compose logs permet d'afficher les logs de tous les services définis dans compose.yaml.

Terminal

docker compose logs

Vous pouvez spécifier un service particulier pour voir ses logs :

Terminal

docker compose logs <service_name>

2. Vérifier l'état des conteneurs

La commande docker compose ps affiche des informations sur l'état de tous les conteneurs gérés par Docker Compose.

Terminal

docker compose ps

La sortie de cette commande montre l'état, les ports et les identifiants des conteneurs.

3. Redémarrer les conteneurs

Si un conteneur ne fonctionne pas correctement, essayez de le redémarrer :

Terminal

docker compose restart <service_name>

4. Connexion à un conteneur actif

Pour examiner plus en détail un problème, vous pouvez vous connecter à un conteneur actif en utilisant la commande docker compose exec.

Terminal

docker compose exec <service_name> /bin/bash

Cette commande ouvre un terminal à l'intérieur du conteneur, ce qui permet d'exécuter des commandes de diagnostic.

5. Utilisation des outils réseau

Vérifier les connexions réseau à l'intérieur des conteneurs peut aider à diagnostiquer les problèmes liés au réseau. Vous pouvez utiliser des outils comme ping, curl, netcat, et autres.

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 Approches avancées

Approches supplémentaires pour trouver des erreurs

1. Vérification du fichier Docker Compose

Les erreurs dans le fichier compose.yaml peuvent entraîner un mauvais fonctionnement des conteneurs. Vérifie la syntaxe du fichier avec la commande :

Terminal

docker compose config

Cette commande vérifiera le fichier pour des erreurs et affichera la configuration finale.

2. Utilisation de Healthcheck

Tu peux définir un healthcheck pour les services dans compose.yaml, afin que Docker vérifie automatiquement l'état des conteneurs.

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. Vérification du montage des volumes

Les problèmes avec les volumes peuvent provenir d'un montage incorrect ou de droits insuffisants. Assure-toi que les volumes sont correctement montés et que les conteneurs y ont accès.

Yaml

version: '3.8'

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

volumes:
  db-data:

3.1 Vérification de l'accessibilité des volumes

Pour vérifier l'accessibilité d'un volume depuis un conteneur, tu peux exécuter un conteneur et lancer une commande qui vérifie la présence du volume (par exemple, la liste des fichiers dans le volume). Supposons que le volume est monté dans le conteneur à l'emplacement /mnt/volume :

Terminal

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

Si le volume est accessible, la commande ls affichera la liste des fichiers et répertoires présents dans le volume. Si le volume est inaccessible ou vide, tu recevras un message correspondant.

3.2 Vérification de l'espace disponible dans le volume

Pour vérifier combien d'espace est disponible sur le volume depuis l'intérieur d'un conteneur, utilise la commande df :

Terminal

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

Elle affiche l'espace disponible sur le système de fichiers où le volume est monté. L'option -h affiche les informations dans un format lisible (avec unités comme Mo, Go, etc.).

4. Utilisation d'une IDE

Pour faciliter le débogage, utilise une IDE avec des fonctions de debug et de logging intégrées. Tu peux créer des fichiers de configuration distincts pour le développement et la production, en utilisant le paramètre --file.

Terminal

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

Important ! Voici une instruction utile pour configurer le débogage à distance d'une application exécutée dans Docker via IntelliJ IDEA : Configuration du débogage à distance .

5. Vérification des variables d'environnement

Des variables d'environnement incorrectes ou manquantes peuvent poser des problèmes. Assure-toi que toutes les variables nécessaires sont définies dans le fichier .env ou directement dans compose.yaml.

Yaml

version: '3.8'

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

9.3 Exemples de commandes pour le débogage

Exemples d'utilisation des commandes pour le débogage

Exemple 1 : Vérification et correction d'une erreur de connexion à la base de données

Afficher les logs du service web :

Terminal

docker compose logs web

Vérification de la connexion réseau entre web et db :

Terminal

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

Connexion au conteneur web pour diagnostic :

Terminal

docker compose exec web /bin/bash

Exemple 2 : Vérification des problèmes avec les volumes

Vérification du montage des volumes :

Yaml

version: '3.8'

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

Connexion au conteneur db et vérification des données :

Terminal

docker compose exec db /bin/bash
ls -l /var/lib/postgresql/data
1
Опрос
Mise à l'échelle des services,  16 уровень,  3 лекция
недоступен
Mise à l'échelle des services
Mise à l'échelle des services
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION