Мое приложение django подключается к базе данных postgreSQL, которая работает в контейнере докеров.
Я могу без проблем подключиться к этому контейнеру, если запущу приложение вручную на своей локальной машине:
./src/manage.py runserver
Однако, если я пытаюсь запустить отладочную конфигурацию через VS Code, я получаю эту ошибку:
psycopg2.OperationalError: could not translate host name "db" to address: Name or service not known
Контейнер db
существует, и docker logs db
возвращает для него информацию.
Вот код, который VSCode запускает, когда я пытаюсь отладить (я не устанавливал ни один из этих параметров):
/home/me/Developer/myproject/venv/bin/python /home/me/.vscode/extensions/ms-python.python-2019.8.30787/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 37153 /home/me/Developer/myproject/src/manage.py runserver --noreload
Как я могу заставить мою конфигурацию отладки работать? Вот конфигурация, сгенерированная VSCode:
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/src/manage.py",
"args": [
"runserver",
"--noreload"
],
"django": true
},
РЕДАКТИРОВАТЬ: Контейнер db
запускается с docker-compose up db
Вот мой docker-compose.yml (для простоты я удалил Redis, celery и beat services). Я запускаю только контейнер db
в докере, а не веб-сервис:
version: '2' # supported by default install on Ubuntu 18.04
services:
db:
image: postgres:9.5-alpine # Production server is using 9.5.17
env_file: .env
volumes:
- postgres_data:/var/lib/postgresql/data/
web:
build: . # current directory
env_file: .env
command: bash -c "python /app/src/manage.py migrate &&
python /app/src/manage.py runserver 0.0.0.0:8000"
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
volumes:
postgres_data:
Также есть docker-compose.override.yml:
version: '2'
services:
db:
ports:
- 5432:5432
.env
POSTGRES_HOST=db
docker-compose
? Если это так, вам нужно опубликовать свой файл компоновки, потому что это похоже на настройку докера. - person markwalker_   schedule 18.08.2019