【发布时间】:2018-07-18 02:16:51
【问题描述】:
我有一个 Python 应用程序(Flask,但这很可能是偶然的),我已经 Docker 化了它(使用 Docker Compose,这又可能是偶然的)。我有除python/flask 以外的进程需要在同一个容器中运行,并且我使用supervisord 进行此操作,因为它很方便。
我在我的代码中设置了一个pdb 断点pdb.set_trace() 并希望连接到我的Flask 应用程序的TTY,以便我可以与(pdb) 提示进行交互。这通常可以正常工作,但我通常不使用supervisord。我无法获得可靠的交互式 (pdb) 提示 - 我的终端似乎连接不正确。
允许调试的通常步骤(通过docker attach)失败了:
告诉docker-compose.yml打开tty并连接stdin:
stdin_open: true
tty: true
告诉docker-compose.yml 设置PYTHONUNBUFFERED:
PYTHONUNBUFFERED: 'true'
我的supervisord 进程块是:
[supervisord]
nodaemon=true
[program:flask]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=flask run
如何使用在 Docker 下运行的 pdb 和 supervisord?
【问题讨论】:
标签: docker docker-compose supervisord pdb