Django не подключается к Docker PostgreSQL
Создали Dockerized PostgreSQL со следующими настройками:
version: "3.8"
services:
db:
image: postgres
restart: always
ports:
- 5432:5432
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
Это мой settings.py
файл:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "postgres",
"USER": "postgres",
"PASSWORD": "postgres",
"HOST": "db",
"PORT": "5432",
}
}
Инициализировал контейнер с помощью docker-compose up
, образ создан и выведены следующие журналы:
db_1 | 2022-06-01 11:45:10.788 UTC [1] LOG: прослушивание на IPv4 адрес "0.0.0.0", порт 5432
.db_1 | 2022-06-01 11:45:10.788 UTC [1] LOG: прослушивание на IPv6 адрес "::", порт 5432
db_1 | 2022-06-01 11:45:10.791 UTC [1] LOG: прослушивание на сокете Unix "/var/run/postgresql/.s.PGSQL.5432"
db_1 | 2022-06-01 11:45:10.795 UTC [60] LOG: система базы данных была выключена в 2022-06-01 11:45:10 UTC
db_1 | 2022-06-01 11:45:10.799 UTC [1] LOG: система базы данных готова принимать соединения
Однако, когда я пытаюсь загрузить свои фикстуры данных в образ Docker Postre с помощью команд migrate
& loaddata
, возникает следующая ошибка:
psycopg2.OperationalError: could not translate host name "db" to address: Unknown host
Я могу подключить мой локальный PostgreSQL, на котором я ранее размещал приложение, но Django не видит контейнер Docker по какой-то причине.
Моя система:
- Python 3.9.0, Django 3.2.8, psycopg2-binary 2.9.2
Есть помощь???
Похоже, что хост db
не находится в сети. Вы можете подтвердить это, просто пропинговав db в shell внутри вашего контейнера django.
Попробуйте добавить сеть в настройки docker-compose:
networks:
develop-net:
driver: bridge
Это указывает docker на использование драйвера моста для создания сетевого моста между вашими контейнерами. Затем в каждом из ваших контейнеров укажите, что они находятся в этой сети:
networks:
- develop-net