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
Вернуться на верх