如何用VS代码远程debuggingDocker容器中的Python代码

我刚刚注册了这个问题。 这是关于是否有可能远程debugging与VS代码的Docker容器中的Python代码。 我在这里有一个完全configuration的Docker容器。 我得到了一些帮助,而且对docker工人来说我还是很新的。 它运行Odoo v10。 但我不能在VS代码中的远程debugging工作。 我已经尝试了这个解释,但我真的不明白。 这甚至有可能吗? 如果是的话,我怎样才能使它工作? 我使用VS Code 1.6.1和Don Jayamanne的Python扩展运行Kubuntu 16.04。 啊,我希望我在这个问题的正确位置,这是不违反任何规则。

更新:

刚刚尝试了埃尔顿·斯通曼的方式。 有了它我得到这个错误:

There was an error in starting the debug server. Error = {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect", "address":"172.21.0.4","port":3000} 

我的Dockerfile看起来像这样:

 FROM **cut_out** USER root # debug/dev settings RUN pip install \ watchdog COPY workspace/pysrc /pysrc RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ python-dev \ && /usr/bin/python /pysrc/setup_cython.py build_ext --inplace \ && rm -rf /var/lib/apt/lists/* EXPOSE 3000 USER odoo 

我的Dockerfile中的pysrc在那里,因为这是为了使用PyDev(Eclipse)之前。

这是我用过的run command

 docker-compose run -d -p 3000:3000 odoo 

这是我的launch.json的重要部分:

  { "name": "Attach (Remote Debug)", "type": "python", "request": "attach", "localRoot": "${workspaceRoot}", "remoteRoot": "${workspaceRoot}", "port": 3000, "secret": "my_secret", "host": "172.21.0.4" } 

我希望现在有足够的信息。

更新2:

好的,我find了解决办法。 我完全误解了Docker的工作方式,并试图彻底改正错误。 我已经有了一个完整的Docker-composeconfiguration。 所以我需要做的一切就是使我的VS Codeconfiguration适应docker-compose.yml。 这意味着我只需将launch.json更改为端口8069(默认的Odoo端口),只需使用docker docker-compose up ,然后在VS Code中debugging。 不幸的是,使用ptvsd有点破坏我的Odoo环境,但至less我现在能够debugging。 谢谢!

是的,这是可能的 – 当Python应用程序在Docker容器中运行时,可以将其视为远程计算机。

在您的Docker镜像中,您需要使远程debugging端口可用(例如EXPOSE 3000中的EXPOSE 3000 ),将ptvsd设置包括在Python应用程序中,然后在运行容器时发布端口,如下所示:

 docker run -d -p 3000:3000 my-image 

然后使用docker inspect来获取正在运行的容器的IP地址,这就是你在启动文件中用于host的东西。