在VS代码中调试一个django应用(本地),找不到我的数据库容器db。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VS代码中调试一个django应用(本地),找不到我的数据库容器db。相关的知识,希望对你有一定的参考价值。

当我在VS Code中运行调试配置时。

"configurations": [
    {
        "name": "Django Tests",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/src/manage.py",
        "args": [
            "test",
            "src"
        ],
        "django": true
    }

我得到了这个错误。django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

当我正常运行应用程序时,我没有这个问题。./src/manage.py runserver

db 是我的容器化postgresql数据库。

services:
  db:
    container_name: db
    build: ./postgresql
    expose:
      - "5432"
    ports:
      - 5432:5432
    ...

也许我没有使用正确的python路径? 我应该从我的python虚拟环境中运行这个,但我不知道如何在VS Code配置中设置,如果这是问题所在。

下面是我的 设置.py

POSTGRES_HOST = os.environ.get('POSTGRES_HOST', '127.0.0.1')
POSTGRES_PORT = os.environ.get('POSTGRES_PORT', '5432')

好像db在本地是可见的。

$ docker logs db

PostgreSQL Database directory appears to contain a database; Skipping initialization

这是CS代码运行的命令 当我试图选择调试配置时

(venv) me@host:/path/to/myproject/$  env DEBUGPY_LAUNCHER_PORT=36867 /path/to/myproject/venv/bin/python3 /home/me/.vscode/extensions/ms-python.python-2020.3.71659/pythonFiles/lib/python/debugpy/no_wheels/debugpy/launcher /path/to/myproject/src/manage.py runserver --noreload
答案

你需要确保 vs-code 能够找到主机。db 或使用 127.0.0.1 覆盖环境。

在你的情况下,覆盖环境 "envFile": "" 做到了这一点。

以上是关于在VS代码中调试一个django应用(本地),找不到我的数据库容器db。的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Django 项目的 VS-code 中激活调试(虚拟环境中的 Django)

在 VS Code 中调试 dockerized Django 导致错误“等待启动器连接超时”

通过 iis或者本地IP 调试代码

外网地址如何调试本地代码

在VS中怎样调试JS代码

如何调试在 AWS EC2 中运行的 Django 应用程序