PyCharm远程调试在docker容器中

dav*_*ode 20 python pycharm docker

我正在努力弄清楚如何设置在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运行调试配置(单击错误图标),它打印(并挂起):

import sys
sys.path.append('../pycharm-debug-py3k.egg') 
import pydevd 
pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)
Run Code Online (Sandbox Code Playgroud)

...在docker容器日志中,我读到:

无法连接到0.0.0.0:4200

我该怎么办?(我的目标是能够在PyCharm中添加断点并停止执行docker容器应用程序以进行调试)

Eug*_*yer 8

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

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

即使现在这需要更多的努力,我会给你更好的结果,也是在你还没有遇到的其他部分,并且会发现,只做一个远程端口连接.

如果您仍想使用基于端口的调试,请参阅Docker:MacOSX Expose Container端口到主机 - 这解释了您应该如何理解attach和listen部分.


小智 6

使用host.docker.internal代替0.0.0.0。这将允许 docker 决定使用哪个 IP。