Le débogage Python dans Docker s’effectue via des outils comme Visual Studio Code et debugpy, en configurant le conteneur pour permettre l’accès distant au débogueur. Découvrez comment mettre en place un environnement simple et robuste pour diagnostiquer vos apps Dockerisées.
3 principaux points à retenir.
- Configurer le debugpy dans votre conteneur est la clé pour un débogage efficace et distant.
- Utiliser Visual Studio Code ou un IDE compatible facilite l’attachement au conteneur et l’inspection dynamique du code.
- La gestion des volumes et ports Docker est indispensable pour synchroniser le code et connecter le debugger sans complexifier le workflow.
Comment préparer un conteneur Docker pour le débogage Python
Pour déboguer efficacement une application Python dans Docker, l’intégration de debugpy est une étape cruciale. C’est un module Python qui permet de faire du débogage à distance. Vous allez voir, c’est assez simple !
Commencez par ajouter debugpy à votre fichier requirements.txt ou directement dans votre code. Assurez-vous d’avoir quelque chose comme ça :
🚀 Devenez un expert en Data Marketing avec nos formations !
Maîtrisez les outils essentiels pour analyser, automatiser et visualiser vos données comme un pro. De BigQuery SQL à Google Apps Script, de n8n à Airtable, en passant par Google Sheets et Looker Studio, nos formations couvrent tous les niveaux pour vous permettre d’optimiser vos flux de données, structurer vos bases SQL, automatiser vos tâches et créer des dashboards percutants. Que vous soyez débutant ou avancé, chaque formation est conçue pour une mise en pratique immédiate et un impact direct sur vos projets. Ne subissez plus vos données, prenez le contrôle dès aujourd’hui ! 📊🔥
debugpy==
Ensuite, il vous faut modifier votre Dockerfile. Voici un petit aperçu :
FROM python:3.x
# Installer debugpy
RUN pip install debugpy
# Exposer le port de débogage (ex : 5678)
EXPOSE 5678
# Votre commande pour démarrer l'application
CMD ["python", "-m", "debugpy", "--listen", "0.0.0.0:5678", "--wait-for-client", "votre_script.py"]
Il est aussi important de monter le code source en volume. Cela vous permet d’éditer votre code localement et de le voir s’exécuter à l’intérieur du conteneur sans avoir à reconstruire l’image chaque fois. Pour ce faire, utilisez votre fichier docker-compose.yml de cette manière :
version: '3'
services:
app:
build: .
volumes:
- .:/app # Monte le répertoire courant
ports:
- "5678:5678" # Expose le port de débogage
Cette configuration vous offre la flexibilité nécessaire pour interagir avec votre conteneur tout en maintenant la sécurité. Pensez à protéger l’accès réseau, notamment en n’exposant que le port de débogage et en limitant les accès à certaines adresses IP. Vous ne voudriez pas que n’importe qui ait accès à votre débogueur !
En résumé, l’utilisation de debugpy avec Docker, c’est comme avoir un tableau de bord pour votre application. Cela vous permet de plonger au cœur de votre code tout en gardant le contrôle sur votre environnement. Alors, prêt à déboguer ? Si vous avez besoin d’explorer plus, consultez cet article informatif sur le débogage de conteneurs Docker.
Comment connecter Visual Studio Code au débogueur dans Docker
Pour connecter Visual Studio Code (VS Code) à un débogueur dans un conteneur Docker, il faut un peu de configuration, mais ne vous inquiétez pas, je vais vous guider pas à pas. Le but ici, c’est de mélanger la puissance de VS Code avec la flexibilité de Docker tout en raffinant notre expérience de débogage.
Tout d’abord, assurez-vous d’avoir installé le plugin Python pour VS Code. Cela vous permettra d’utiliser des fonctionnalités avancées telles que le débogage. Une fois que c’est fait, vous pourrez configurer le fichier launch.json qui se trouve dans le dossier .vscode de votre projet. Voici un exemple de ce à quoi cela pourrait ressembler :
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": {
"/app": "${workspaceFolder}/app"
}
}
]
}Ce fichier indique à VS Code d’attacher le débogueur sur le port 5678 et de mapper le chemin de votre application dans Docker avec votre espace de travail local. Ce dernier point est essentiel, sinon le débogage ne saura pas où chercher votre code.
Maintenant que votre launch.json est en place, passons à l’étape suivante : lancer votre conteneur Docker avec le bon environnement de débogage. Vous devez utiliser debugpy, qui est un module Python permettant de déboguer des applications à distance. Voici comment lancer votre conteneur :
docker run -d -p 5678:5678 \
-v $(pwd)/app:/app \
-e PYTHONPATH=/app \
your-image-name python -m debugpy --bind 0.0.0.0:5678 --listen 5678 -m your_moduleÀ ce stade, vous avez votre conteneur qui tourne avec le débogueur actif. Ouvrez VS Code et allez dans l’onglet de débogage, sélectionnez votre configuration « Python: Attach », puis cliquez sur le bouton de lecture. À partir de là, vous pouvez commencer à définir des points d’arrêt dans votre code en cliquant dans la marge à gauche du code source. Ces points d’arrêt vont interrompre l’exécution du programme et vous permettre d’examiner les variables, la mémoire et le flux d’exécution en détail.
Voilà, c’est tout simple. En utilisant Docker et VS Code ensemble, vous créez un environnement de développement agile et efficace. Et si vous souhaitez approfondir un peu plus, jetez un œil à cette ressource : Visual Studio Documentation.
Quels pièges éviter lors du débogage Python dans Docker
Déboguer un programme Python sous Docker peut parfois ressembler à un chemin semé d’embûches. Vous avez configuré votre environnement, mais malgré cela, vous êtes confronté à des pièges classiques. Alors, quels sont ces pièges et comment les éviter ?
- Conflit de ports : L’un des problèmes fréquents, c’est quand l’application tente d’écouter sur un port déjà occupé par un autre service. Cela peut provoquer des erreurs inexplicables. Pour y remédier, vérifiez les ports exposés dans votre
Dockerfileet assurez-vous qu’ils ne sont pas utilisés. Utilisez la commandedocker pspour voir quels conteneurs sont actifs et leurs ports associés. - Mauvaise synchronisation des volumes : Si les fichiers de votre code local ne se synchronisent pas correctement avec votre conteneur, attendez-vous à des comportements erratiques. Un exemple classique serait d’avoir un fichier `requirements.txt` modifié localement, mais pas synchronisé dans le conteneur. Pour éviter cela, assurez-vous d’utiliser les volumes Docker correctement dans votre
docker-compose.yml. Vérifiez les chemins d’accès et les droits associés. - Décalage entre le code local et le code exécuté dans le conteneur : C’est le fameux problème « ça marche sur ma machine ! ». Vous pouvez exécuter la version locale qui diffère de celle dans le conteneur. Pour le résoudre, assurez-vous toujours de reconstruire vos images Docker après chaque changement de code avec
docker-compose build. - Délais du débogueur : Lors de l’utilisation d’outils comme `pdb`, il peut y avoir des seconds de latence supplémentaires lorsque vous êtes dans un conteneur. Pensez à tester directement l’exécution des scripts sans le débogueur pour voir où le vrai problème réside.
- Problèmes de firewall : Dans certains cas, votre firewall local peut bloquer les connexions vers les ports exposés par le conteneur. Assurez-vous de vérifier vos paramètres de sécurité pour autoriser les connexions pertinentes.
Pour booster votre efficacité, des outils comme docker logs vous permettent d’afficher les journaux de l’application et d’obtenir des informations sur les erreurs survenues. Utilisez docker exec -it pour accéder à un shell dans le conteneur et inspecter directement vos fichiers et configurations.
Une dernière astuce : documentez vos étapes de débogage. Cela peut sembler redondant, mais vous serez bien étonné de la rapidité avec laquelle nous oublions les détails.! Pour plus de conseils, rendez-vous sur cet article.
Maintenant, prêt à déboguer votre Python dans Docker sans galères ?
Déboguer Python dans Docker n’est plus une corvée grâce à debugpy et aux bons outils comme Visual Studio Code. En configurant correctement votre Dockerfile, en exposant les ports et en synchronisant le code, vous gagnez un contrôle total sur vos applications containerisées. La clé : comprendre les interactions entre Docker et votre IDE pour un débogage fluide et précis. Ce savoir-faire vous fait gagner du temps, réduit les erreurs et simplifie la maintenance de vos projets Python en production ou développement.
FAQ
Pourquoi utiliser debugpy pour le débogage Python dans Docker ?
Comment monter le code source pour faciliter le débogage ?
Quelles sont les erreurs courantes à éviter lors du débogage dans Docker ?
Peut-on déboguer un conteneur Python en production ?
Quels outils complémentaires pour améliorer le débogage Docker ?
A propos de l’auteur
Franck Scandolera est consultant expert en Data Engineering et automation, formateur et développeur avec plus de quinze ans d’expérience technique. Il accompagne des professionnels sur la mise en place de solutions robustes et optimisées, notamment dans des environnements complexes comme Docker et Python. Sa connaissance approfondie du debug et de l’automatisation no-code fait de lui un référent reconnu dans le domaine du développement et de l’intégration continue.







