Как запустить pdb внутри контейнера DockerPython

Программы на Python
Anonymous
Как запустить pdb внутри контейнера Docker

Сообщение Anonymous »

Я явно чего-то не понимаю. Я пытаюсь запустить отладчик pdb в интерактивном режиме с контейнером Docker.
Вот код:
Dockerfile:

Код: Выделить всё

FROM python:3.6
ENV PROJECT_DIR=/opt/foo
WORKDIR $PROJECT_DIR
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "foo.py"]
foo.py:

Код: Выделить всё

def hello_world():
print("hello world")
if __name__ == '__main__':
#import pdb; pdb.set_trace()
hello_world()
Если я запускаю docker build -t foo ., а затем docker запускаю foo, он выводит «hello world», как и ожидалось.
Но если я раскомментирую вызов pdb.set_trace() выше и попробую еще раз, я получу следующую ошибку:

Код: Выделить всё

/opt/foo/foo.py(8)()
-> hello_world()
(Pdb)
Traceback (most recent call last):
File "foo.py", line 8, in 
hello_world()
File "foo.py", line 8, in 
hello_world()
File "/usr/local/lib/python3.6/bdb.py", line 51, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/local/lib/python3.6/bdb.py", line 70, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
Чего я не получаю?

edit:
BbdQuit, возникающий при отладке Python, не является дублирующей проблемой.
Моя проблема, как правильно определил @soundstripe, не обеспечивала интерактивный доступ через Docker для pdb.>

Вернуться в «Python»