【问题标题】:VS Code Remote Debugging Python in a Docker containerVS Code 在 Docker 容器中远程调试 Python
【发布时间】:2021-03-17 03:44:24
【问题描述】:

我正在使用 VS Code 的“Remove - WSL”扩展来尝试连接到运行 Python 作业的 Docker 容器(由 WSL2 支持)。

python 作业的启动有点像这样:

exec python3 -m debugpy --listen 5678 --wait-for-client some_file.py

在我设置的 docker-compose.yml 文件中

ports:
  - "5678:5678"

我使用

运行服务
docker-compose up

我的 VS Code launch.json 包含以下内容:

    {
        "name": "Python: Remote Attach",
        "type": "python",
        "request": "attach",
        "connect": {
            "host": "localhost",
            "port": 5678
        },
        "pathMappings": [
            {
                "localRoot": "/home/myname/tensorflow_models/research",
                "remoteRoot": "/home/tensorflow/models/research"
            }
        ]
    }

但是,运行上述任务会短暂打开调试栏,然后将其关闭且没有错误消息。

当我执行到容器中时,我可以运行netcat localhost 5678,它会返回 json。但是,当我从 WSL 运行它时,它不会返回任何内容:

netcat localhost 5678

或在 Windows 上通过 powershell:

powercat -c localhost -p 5678

甚至使用容器的 ip 从容器内:

# Manually get ip address
ip a
# Doesn't return anything
netcat <ip> 5678

【问题讨论】:

    标签: python docker windows-subsystem-for-linux remote-debugging vscode-debugger


    【解决方案1】:

    问题在于默认情况下debugpy 仅侦听localhost(仅限本地连接)。解决方法是将监听地址设置为0.0.0.0(所有地址绑定到主机):

    exec python3 -m debugpy --listen 0.0.0.0:5678 --wait-for-client some_file.py
    

    【讨论】:

      猜你喜欢
      • 2017-03-07
      • 1970-01-01
      • 2020-09-30
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 2020-04-06
      • 2021-11-12
      相关资源
      最近更新 更多