Je viens de m'inscrire pour cette question. Il s'agit de savoir s'il est possible de déboguer à distance python dans un Docker Container avec VS Code. J'ai un Docker Container complètement configuré ici. J'ai obtenu un peu d'aide avec, et je '' m assez nouveau à docker de toute façon. Dans il exécute Odoo v10. Mais je ne peux pas obtenir le débogage à distance dans VS Code pour travailler. J'ai essayé this explication, mais je ne comprends pas vraiment. Est-ce même possible? Et si oui, comment puis-je le faire fonctionner? J'utilise Kubuntu 16.04 avec VS Code 1.6.1 et l'extension Python de Don Jayamanne. Ah oui et j'espère que je suis au bon endroit avec cette question et ce n'est contre aucune règle.
MISE À JOUR:
Je viens d'essayer la voie d'Elton Stoneman. Avec ça, je reçois cette erreur:
There was an error in starting the debug server.
Error = {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect",
"address":"172.21.0.4","port":3000}
Mon Dockerfile
ressemble à ceci:
FROM **cut_out**
USER root
# debug/dev settings
RUN pip install \
watchdog
COPY workspace/pysrc /pysrc
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
python-dev \
&& /usr/bin/python /pysrc/setup_cython.py build_ext --inplace \
&& rm -rf /var/lib/apt/lists/*
EXPOSE 3000
USER odoo
Le pysrc
dans mon Dockerfile est là car il était destiné à fonctionner avec PyDev (Eclipse) auparavant.
C'est le run command
J'ai utilisé:
docker-compose run -d -p 3000:3000 odoo
Et c'est la partie importante de mon launch.json
:
{
"name": "Attach (Remote Debug)",
"type": "python",
"request": "attach",
"localRoot": "${workspaceRoot}",
"remoteRoot": "${workspaceRoot}",
"port": 3000,
"secret": "my_secret",
"Host": "172.21.0.4"
}
J'espère que c'est assez d'informations pour l'instant.
MISE À JOUR 2:
D'accord, j'ai trouvé la solution. J'ai totalement mal compris le fonctionnement de Docker et l'ai complètement mal essayé. J'avais déjà un Docker-compose complètement configuré. Donc, tout ce que je devais faire était d'adapter mes configurations VS Code au docker-compose.yml. Cela signifie que je devais juste changer le launch.json au port 8069 (port Odoo par défaut) et juste besoin d'utiliser docker-compose up
, le débogage fonctionne dans VS Code. Malheureusement, l'utilisation de ptvsd
détruit un peu mon environnement Odoo, mais au moins je peux déboguer maintenant. Merci!
Oui, c'est possible - lorsque l'application Python s'exécute dans un conteneur Docker, vous pouvez la traiter comme une machine distante.
Dans votre image Docker, vous devrez rendre le port de débogage distant disponible (par exemple EXPOSE 3000
dans le Dockerfile), incluez la configuration ptvsd
dans votre application Python, puis publiez le port lorsque vous exécutez le conteneur, quelque chose comme:
docker run -d -p 3000:3000 my-image
Utilisez ensuite docker inspect
pour obtenir l'adresse IP du conteneur en cours d'exécution, et c'est ce que vous utilisez pour le Host
dans le fichier de lancement.