如何用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
的东西。