我正在努力弄清楚如何设置在Docker容器中运行的python app(Flask)的远程调试。 具体来说,我使用的是docker-compose,PyCharm professional和python 3.5。 这就是我到目前为止所做的:
我在wsgi.py文件中添加了以下行:
import sys sys.path.append('../ pycharm-debug-py3k.egg')import pydevd pydevd.settrace('0.0.0.0',port = 8200,stdoutToServer = True,stderrToServer = True)
我在PyCharm中创建了一个远程调试配置(通过将本地机器项目路径的路径映射到docker容器中的路径)
通过从PyCharm运行调试配置(单击错误图标),它打印(并挂起):
Starting debug server at port 4200
Use the following code to connect to the debugger:
import pydevd
pydevd.settrace('0.0.0.0', port=4200, stdoutToServer=True, stderrToServer=True)
Waiting for process connection...
...在docker容器日志中我读到了:
无法连接到0.0.0.0:4200
我该怎么办? (我的目标是能够在PyCharm中添加断点并停止执行docker容器应用程序以进行调试)
答案 0 :(得分:8)
使用远程解释器,这将同时解决几个问题。我已经在这里回答了Rich editors in a Docker development environment
将远程python SDK添加到IDE,然后这将解析远程安装的所有库。您将需要SSH连接才能完成此操作,因此请安装sshd并使用我在答案中概述的共享开发人员密钥。
即使现在这需要更多的努力,我也会给你提供更好的结果,在你还没有遇到的其他部分中,并且会在进行远程端口连接时找到它。
如果您仍想使用基于端口的调试,请参阅Docker: MacOSX Expose Container ports to host machine - 这解释了您应该如何理解附加和监听部分。
答案 1 :(得分:2)
使用host.docker.internal
代替0.0.0.0
。这将允许docker决定使用哪个IP。
答案 2 :(得分:0)
也许您应该连接到自己的pycharm主机,而不是0.0.0.0,而不是自己的IP地址