Docker-compose and pdb
I see that I'm not the first one to ask the question but there was no clear answer to this:
How to use pdb with docker-composer in Python development?
When you ask uncle Google about django docker
you get awesome docker-composer examples and tutorials and I have an environment working - I can run docker-compose up
and I have a neat developer environment but the PDB is not working (which is very sad).
I can settle with running docker-compose run my-awesome-app python app.py 0.0.0.0:8000
but then I can access my application over http://127.0.0.1:8000 from the host (I can with docker-compose up
) and it seems that each time I use run
new containers are made like: dir_app_13
and dir_db_4
which I don't desire at all.
People of good will please aid me.
PS
I'm using pdb++ for that example and a basic docker-compose.yml from this django example. Also I experimented but nothing seems to help me. And I'm using docker-composer 1.3.0rc3 as it has Dockerfile pointing support.
Solution 1:
Use the following steps to attach pdb on any python script.
Step 1. Add the following in your yml file
stdin_open: true
tty: true
This will enable interactive mode and will attach stdin. This is equivalent for -it mode.
Step 2.
docker attach <generated_containerid>
You'll now get the pdb shell
Solution 2:
Try running your web container with the --service-ports option: docker-compose run --service-ports web