当前位置: 首页 > 面试题库 >

如何使用VS Code远程调试Docker容器中的python代码

宋景福
2023-03-14
问题内容

我刚刚注册了这个问题。关于是否可以使用VS
Code在Docker容器中远程调试python代码。我在这里有一个完全配置的Docker容器。我在这方面获得了一些帮助,无论如何我还是Docker的新手。在其中运行Odoo
v10。但是我无法在VS
Code中进行远程调试。我已经尝试过这种解释,但我真的不明白。可能吗 如果是的话,我该如何运作?我正在使用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

pysrc在我的Dockerfile是存在的,因为这是打算与之前的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的工作原理,并完全错误地尝试了它。我已经有一个completeley配置的Docker-
compose。因此,我要做的就是将VS Code配置修改为docker-
compose.yml。这意味着我只需要将launch.json更改为端口8069(默认的Odoo端口),并且只需要使用docker-compose up,即可在VS Code中进行调试。不幸的是,使用ptvsdkinda破坏了我的Odoo环境,但是至少我现在可以调试了。谢谢!


问题答案:

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

在Docker映像中,您需要使远程调试端口可用(例如EXPOSE 3000,在Dockerfile中),将ptvsd设置包含在Python应用程序中,然后在运行容器时发布该端口,例如:

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

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



 类似资料:
  • 我很难弄清楚如何设置在Docker容器中运行的python应用程序(Flask)的远程调试。具体来说,我使用的是docker compose、PyCharm professional和python 3.5。这就是我到目前为止所做的: > 我把pycharm-debug-py3k.egg复制到项目文件夹 我在wsgi.py文件中添加了以下行: 我在PyCharm中创建了一个远程调试配置(通过将本地机

  • 我有一个简单的nodeJs应用程序,它使用快速框架。我可以在docker容器中成功运行这个应用程序。 我需要从VS代码远程调试这个应用程序如何做到这一点。 我在远程调试中采取的以下步骤 docker构建命令 docker运行命令 运行docker后,it控制台输出一条消息 调试器侦听127.0.0.1:5858 但是我无法从本地主机:8080访问节点应用程序,也无法从VScode进行调试。

  • 问题内容: 我是Docker的新手。我已经阅读了docker remote API中的教程。在创建容器方面。它显示了太多无法填充的参数。我想知道什么等效于此命令: docker run -d -p 5000:5000 –restart =始终–name注册表注册表:2。 我对此一无所知。谁能告诉我?谢谢! 问题答案: 原始答案(2015年7月): 如本教程所述(如果启用了远程API的话)(不直接测

  • 本文向大家介绍VSCode远程开发调试服务器c/c++代码,包括了VSCode远程开发调试服务器c/c++代码的使用技巧和注意事项,需要的朋友参考一下 思路与上篇(PyCharm远程调试服务器python代码 )是一致的,所以端口转发这部分直接照抄上篇: 一、端口转发 对于没有公网IP的远程训练服务器,需要先配置端口转发,可以用ssh借道有办公网IP的办公机器。 0、公司给配置了一台Ubuntu系

  • 编辑 使用VSCode时,我在虚拟环境中调试时遇到了一个问题,该虚拟环境中有不同的包,而这些包没有安装在< code>base环境中。在使用命令< code>activate my_env激活环境之后,我可以使用通常的python命令在环境中使用包,如< code>python main.py。但是在调试时,我不能使用只安装在< code>my_env中的包。如何使用VSCode在虚拟环境中调试p

  • 问题内容: 我在远程计算机上有一个go代码库,希望能够使用Goland进行调试。我一直在试图找出如何设置类似于PyCharm的远程解释器的方法,但是我一直无法弄清楚。我能找到的最好的是他们的博客教程,但由于Docker容器和Web应用程序而变得很复杂。如何设置Goland进行远程调试? 问题答案: 在该博客文章中,Docker容器用于模拟远程机器。 GoLand目前没有与PyCharm的远程调试类