使用 VSCode 调试在 Docker 容器中执行的 Python 脚本?

avi*_*tor 5 python debugging docker visual-studio-code

假设我有一个名为 的 Docker 映像my_image和一个名为 的 Python 脚本my_code.py。也就是说,通常我会运行类似以下命令来运行该文件:

docker run my_image /usr/bin/python3 my_code.py
Run Code Online (Sandbox Code Playgroud)

现在我想在 VSCode 的交互式调试环境中执行此操作。每个在线指南似乎都引用了 Dockerfile,并且需要一堆我不熟悉的配置。例如,Docker 扩展tasks.json为我生成了这个:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "docker-build",
            "label": "docker-build",
            "platform": "python",
            "dockerBuild": {
                "tag": "myworkspace:latest",
                "dockerfile": "${workspaceFolder}/Dockerfile",
                "context": "${workspaceFolder}",
                "pull": true
            }
        },
        {
            "type": "docker-run",
            "label": "docker-run: debug",
            "dependsOn": [
                "docker-build"
            ],
            "python": {
                "file": "my_code.py"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但我没有 Dockerfile,并且对构建 Docker 容器不感兴趣,因为我已经有了映像,并且我始终可以启动它,而无需像上面那样在命令上进行调试,而无需任何中间步骤或其他配置。我只是想在我的容器恰好正在执行的脚本中放置断点,然后使用 VSCode 调试这些脚本。也许这就像以某种方式将上面的配置指向我想要使用的图像名称(即my_image)一样简单,但我什至不知道将其放在哪里。有什么指点吗?

Min*_*SFT -1

我们可以使用命令 Docker: Add Docker Files to Workspace...创建 Docker 启动配置,以在调试模式下构建和运行容器。

  1. 导航到包含应用程序启动代码的文件,然后设置断点。
  2. 导航到运行和调试,然后根据需要选择 Docker: Python - General、Docker: Python - Django 或 Docker: Python - Flask。
  3. 使用 F5 键开始调试。

您还可以参考此文档了解更多有关 docker 和 docker 中调试的详细信息