在 Docker 容器中进行 PyCharm 远程调试

问题描述 投票:0回答:4

我很难弄清楚如何设置在 Docker 容器中运行的 python 应用程序 (Flask) 的远程调试。 具体来说,我使用的是 docker-compose、PyCharm professional 和 python 3.5。 这就是我到目前为止所做的:

  • 我将“pycharm-debug-py3k.egg”复制到项目文件夹中
  • 我在 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 容器应用程序的执行以对其进行调试)

python docker pycharm
4个回答
14
投票

使用

host.docker.internal
而不是
0.0.0.0
。这将允许 docker 决定使用哪个 IP。


11
投票

使用远程解释器,这将立即解决几个问题。我已经在这里回答了这个问题Docker开发环境中的丰富编辑器

将远程 python SDK 添加到您的 IDE,这也将解析远程安装的所有库。不过,您将需要 SSH 连接才能完成此操作,因此请安装 sshd 并使用我在答案中概述的共享开发人员密钥。

尽管现在需要付出更多的努力,但我会给您带来更好的结果,也在您尚未遇到的其他部分中,并且在仅进行远程端口连接时会发现。

如果您仍然想使用基于端口的调试,请参阅Docker:MacOSX 将容器端口暴露给主机 - 这解释了您应该如何理解附加和侦听部分。


0
投票

也许你应该连接到你自己的主机,即你的pycharm所在的机器。而不是0.0.0.0,而不是你自己的IP地址


0
投票

我最近必须自己设置相同的工作流程,并决定创建一个简单的示例存储库来逐步完成设置过程。

希望这可以帮助那些想要做同样事情的人。

© www.soinside.com 2019 - 2024. All rights reserved.