无法在 docker 容器中输入 ipdb 控制台

Can't type in ipdb console in docker container

我正在使用 docker-compose 来构建我的 docker 容器,并且 运行 容器带有 --service-ports 标志,如下所示:

docker-compose run --service-ports $(service_name) -d

当尝试使用 import ipdb; ipdb.set_trace() 在容器中的 python 脚本中调用 ipdb 时,ipdb 已初始化,但我无法在控制台中键入任何内容。我还必须手动重新启动终端会话才能停止它(CTRL+CCTRL+D 等什么都不做)。好像终端也没有冻结,因为我仍然可以向后滚动和聚焦/取消聚焦,光标也会改变外观。

这就是我的术语(我使用 iTerm):

有什么解决办法吗?

结果归结为 ipdb 与 docker 容器中的 eventlet.monkey_patch 不兼容。

简单修复,切换到 pdbpp :D

以下 link 对我也适用于 ipdb:

https://blog.lucasferreira.org/howto/2017/06/03/running-pdb-with-docker-and-gunicorn.html