在 VS Code 中调试 Django 应用程序(本地)找不到我的数据库容器 db
debugging a django app (locally) in VS Code can't find my database container 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 配置中设置它,如果这是问题所在。
这是我的 settings.py
POSTGRES_HOST = os.environ.get('POSTGRES_HOST', '127.0.0.1')
POSTGRES_PORT = os.environ.get('POSTGRES_PORT', '5432')
似乎数据库在本地可见:
$ docker logs db
PostgreSQL Database directory appears to contain a database; Skipping initialization
这是我尝试选择调试配置时的命令 CS 代码 运行s:
(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 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 配置中设置它,如果这是问题所在。
这是我的 settings.py
POSTGRES_HOST = os.environ.get('POSTGRES_HOST', '127.0.0.1')
POSTGRES_PORT = os.environ.get('POSTGRES_PORT', '5432')
似乎数据库在本地可见:
$ docker logs db
PostgreSQL Database directory appears to contain a database; Skipping initialization
这是我尝试选择调试配置时的命令 CS 代码 运行s:
(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": ""
成功了。