Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django / Docker / Remote Debug using Pydev

My setup is the following one : - a django server running in a docker with port mapping: 8090:8090 - Eclipse with PyDev

I want to be able to put breakpoint on Pydev (click on a line, step by step)

I found several articles like; http://www.pydev.org/manual_adv_remote_debugger.html

but it's still not working.

1) Should I update the manage.py to "import pydev" ? which lines to add and do I have to copy inside the docker container the pysrc of pydev plugin in order to be able to do the module import ?

2) Is there a port forwarding needed ? python instance running into docker should have access to remote debug server on host machine ?

3) I found article about pycharm and remote debug using ssh ? not possible to do similar with pydev ?

4) How to "link" my local directory and docker "directory" ?

[EDIT] I found the solution

  • Copy the eclipse/path_to\pydev\plugins\org.python.pydev\pysrc directory into a place where your docker container can access it.

  • Edit pysrc/pydevd_file_utils.py, and add directory mapping between your host and docker container like: PATHS_FROM_ECLIPSE_TO_PYTHON = [(r'C:/django',r'/.../lib/django'), (r'C:/workspace/myapp',r'/var/www/myapp')] you can set several tuples if you have several paths containing python code

  • edit manage.py and add the following

    sys.path.append('/my_path/to_pysrc_/under_docker/pysrc') import pydevd pydevd.settrace(host='172.17.42.1') #IP of your host

  • In Pydev, in preferences > Pydev > Run/Debug > Port for remote debugger: 5678

  • In Debug Perspective, click on "Start the Pydev server"

  • in your docker, run: python manage.py runserver 0.0.0.0:8090 --noreload

    (replace 8090 by your http port)

    • In Pydev: you will see that the code just break after settrace !

    • Now You can add some breakpoint and use the debug CLI of Pydev:) Enjoy !

like image 353
TomPAP Avatar asked Nov 09 '22 18:11

TomPAP


1 Answers

I had the similar issue - django project in docker, connect to docker by pycharm 145.1504 & 162.1120 via docker interpreter, run server works OK, but debug is stack after pycharm runs

/usr/bin/python2.7 -u /root/.pycharm_helpers/pydev/pydevd.py --multiproc --qt-support --client '0.0.0.0' --port 38324 --file /opt/project/manage.py runserver 0.0.0.0:8000.

I tried to find out why for a few days, then connected pycharm to docker by ssh connection and everything works fine, run and debug.

like image 122
slav Avatar answered Nov 15 '22 05:11

slav