Debug python containers pdb docker breakpoint
Debugging python docker containers with remote-pdb, docker-compose
You want to debug and set breakpoints inside your docker container and/or you want to debug with docker-compose.
Warning:
As the docs say: The debug host in your Docker container must be set to 0.0.0.0 (localhost or 127.0.0.1 will not work because Docker doesn’t map the port on the local interface).
Using Remove-pdb by ionel
pip install remote-pdb==2.1.0
python3 -m venv venv
. venv/bin/activate
Build example Dockerfile
Dockerfile
FROM python:3.9.6-alpine3.14
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./main.py" ]
Build it:
docker build -t example .
Run the docker container
docker run -p 4444:4444 example 
Where did 4444 come from? It comes from the main.py , we
tell remote-pdb which port to listen on- you can choose any port.
Start debugging!
- Ensure you have imported remote-pdb
from remote_pdb import RemotePdb
RemotePdb('127.0.0.1', 4444).set_trace()
Note: You only need to do this once.
- Put a breakpoint in your code (e.g. breakpoint())
- telnet 127.0.0.1 4444
Example docker-compose file
version: "3.9"
   
services:
  django:
    stdin_open: true
    tty: true
    build: django
    ports:
      - "8001:8000"
      - "4444:4444" # This is the debugger port