Les Crash-Devs d'un Passionné

Faire du pas à pas dans un container Docker python déjà lancé avec VSCode

/Catégorie/python

Temps de lecture : 3 minutes

Nous avons vu dans un précédent article la configuration de VSCode pour faire du débogage avec une application Django au travers Docker

Dans cette partie nous allons également aborder la configuration de VSCode sur une application python sans django.

Cette fois nous allons nous connecter à un container déjà lancé, orchestré par docker-compose. Pour l'exemple nous allons prendre le logiciel Odoo qui est un ERP open source développé en python.

Installer les dépendances

Pour que le mode pas à pas soit possible il est nécessaire d'installer la librairie debugpy qui est développée par Microsoft.

pip3 install debugpy

Vous pouvez placer cette instruction dans votre Dockerfile

RUN pip3 install debugpy

et relancer un build, par exemple avec docker compose

docker-compose up --build

Encapsuler votre application

La seule chose à faire est de charger le module python debugpy avant de lancer votre application.

Dans notre cas nous allons modifier le docker-compose.yml en précisant la commande suivante

clipboard
Copier le code
1
2
3
4
5
/usr/bin/python3 -m debugpy --listen 0.0.0.0:8088 \
  /usr/bin/odoo -d $POSTGRES_DB --db_host=$POSTGRES_HOST --db_user=$POSTGRES_USER --db_password=$POSTGRES_PASSWORD \
  --without-demo=all \
  --dev all,reload \
  --log-level=debug

L'option

-m debugpy

charge le module et

--listen 0.0.0.0:8088

écoute le port 8088 pour faire le pas à pas.

Le reste des options est liées à l'application odoo en mode développement

Relancez votre application

docker-compose up

TIPS : Dans VSCode vous pouvez lancer docker-compose avec un clic droit sur ce fichier Compose Up.

Utilisation

Il vous reste à configurer votre débogueur VSCode en plaçant dans le dossier .vscode, à la racine de votre application, ce fichier launch.json

clipboard
Copier le code
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{
    "configurations": [
        {
            "name": "Odoo: Debug",
            "type": "python",
            "request": "attach",
            "port": 8088,
            "debugServer": 8088,
            "host": "172.17.0.1",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}/addons",
                    "remoteRoot": "/mnt/extra-addons",
                }
            ],
            "logToFile": true
        }
    ]
}

La valeur a indiqué dans le champ host est le résultat de cette commande

docker inspect bridge --format="{{(index .IPAM.Config 0).Gateway}}"

Il vous reste à placer un point d'arrêt et d'aller dans l'onglet Run de VSCode

run-debug-vscode-odoo