Joh*_*aly 11 django docker docker-compose visual-studio-code
我想做的事情看起来很简单,但真正实现却非常困难。我有一个在 docker-compose 环境中运行的 Django 应用程序,我想在 Vscode 中使用断点运行和调试单元测试。
由于这是一个大项目,团队不一定使用 vscode,因此我无法随意添加库(例如 ptvsd)。我希望有一个神奇的配置tasks.json,launch.json可以让事情顺利进行。
我有一个用于 postgres 数据库的容器,一个用于 django,一个用于 redis,所有这些都在 docker-compose.yml 中定义。我可以在终端中运行一个命令来运行测试,它是:
docker-compose run --rm app python manage.py test
Run Code Online (Sandbox Code Playgroud)
appdjango 应用程序容器在哪里。我希望能够以能够在 vscode 中命中断点的方式运行此命令。
我对launch.json文件的不完整分析如下所示:
docker-compose run --rm app python manage.py test
Run Code Online (Sandbox Code Playgroud)
和我的tasks.json:
{
"configurations": [{
"name": "Docker: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "compose-for-debug",
"python": {
"pathMappings": [{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}],
"projectType": "django"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
我想我需要以某种方式将构建任务转换为 docker compose 任务,但我只是不知道它是如何完成的。在终端中运行容器并以某种方式使 vscode 在启用断点的情况下附加到它们也可能是有意义的。
即使对如何解决这个问题提供一些帮助也会很棒。我知道这是一个棘手的问题。
这个问题变得有些流行,但一直没有直接的答案。如果您来到这里寻找一种使用 docker 在 vscode 中命中断点的方法,我的建议是使用该Remote Container扩展。
当容器启动时,右键单击它并在容器本身内部打开一个 vscode 窗口。然后一切都会正常进行。