【发布时间】:2017-03-07 03:30:41
【问题描述】:
我刚刚注册了这个问题。这是关于是否可以使用 VS Code 在 Docker 容器中远程调试 python 代码。 我在这里有一个完全配置的 Docker 容器。我得到了一些帮助,而且我对 docker 还是很陌生。在其中运行 Odoo v10。但是我无法在 VS Code 中进行远程调试。我试过this 的解释,但我真的不明白。 甚至可能吗?如果是,我怎样才能让它工作? 我正在使用 VS Code 1.6.1 和 Don Jayamanne 的 Python 扩展运行 Kubuntu 16.04。 啊,是的,我希望我在这个问题上处于正确的位置,并且不违反任何规则。
更新:
刚刚尝试了 Elton Stoneman 的方法。有了它,我收到了这个错误:
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:
好的,我找到了解决方案。我完全误解了 Docker 的工作原理,并且完全错误地尝试了它。我已经有一个完整配置的 Docker-compose。所以我需要做的就是让我的 VS Code 配置适应 docker-compose.yml。这意味着我只需将launch.json更改为端口8069(默认Odoo端口)并且只需要使用docker-compose up,然后在VS Code中进行调试即可。
不幸的是,ptvsd 的使用有点破坏了我的 Odoo 环境,但至少我现在可以调试了。谢谢!
【问题讨论】:
-
您能否使用您在
launch.json中输入的内容更新您的更新 2?当您说您使用docker-compose up时,也不确定您的意思。对您的工作流程的解释将不胜感激:) -
不幸的是,我的
launch.json不再用于这个项目,但我所做的只是将端口更改为"port": 8069。docker-compose是一个扩展 docker 功能的工具。docker-compose up只是启动所有找到的 docker 容器。我不得不说它仍然没有按预期工作,我从来没有在 VS Code 中远程调试 docker 来工作。如果你让它工作,请告诉我:)。 -
嗨 - 后续问题 - 为什么将端口更改为 8069 可以解决您的问题?你有原始的 docker-compose 文件吗?
标签: python docker visual-studio-code remote-debugging