我很难弄清楚如何设置在Docker容器中运行的python应用程序(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运行调试配置(单击bug图标),它将打印(并挂起):
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容器日志中我读到:
Could not connect to 0.0.0.0: 4200
我该怎么办?(我的目标是能够在PyCharm中添加断点,并停止docker容器应用程序的执行以进行调试)
也许你应该连接到你自己的主机,这是你的魅力。不是0.0.0.0,而是您自己的ip地址
使用
host.docker.internal
而不是0.0.0.0
。这将允许docker决定使用哪个IP。使用远程解释器,这将同时解决一些问题。我已经在这里回答过了Rich editors in a Docker development environment
在IDE中添加一个远程python SDK,这也将解析远程安装的所有库。不过,您需要一个SSH连接来完成这项工作,所以请安装sshd并使用我在回答中概述的共享开发人员密钥。
即使这现在有点多努力,我会给你很多更好的结果,也在其他部分你还没有遇到和会发现,当做一个远程端口连接。
如果您仍然想使用基于端口的调试,请参见Docker: MacOSX Expose Container ports to host machine-这解释了您应该如何理解attach和listen部分。
相关问题 更多 >
编程相关推荐