Невозможно подключиться к БД Postgres, живущей в одном файле docker-compose, с приложением django в отдельном файле docker-compose

У меня есть большое монореповое Django приложение, которое я хочу разбить на два отдельных репозитория (один для обработки внешних api запросов, а другой для обработки моего front end, который я планирую показывать пользователям). Я бы хотел, чтобы оба приложения django имели доступ к одной и той же базе данных при локальном запуске. Есть ли способ сделать это? Я использую docker для обоих приложений и у меня проблемы с тем, что мое приложение django для фронт-энда может подключиться к БД Postgres, которую я установил в отдельном файле docker-compose, а не в том, который я создал для своего фронт-энда.

Файл внешнего API docker-compose (здесь создается докер-образ Postgres DB при запуске docker-compose up --build)

---
version: "3.9"
services:
  db:
    image: postgres:13.4
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

  api:
    restart: always
    build: .
    image: &img img-one
    command: bash start.sh
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    env_file:
      - variables.env

Передняя сторона docker-compose файл (Это тот, который я хочу иметь возможность подключиться к вышеуказанной БД):

---
version: "3.9"
services:
  dashboard:
    restart: always
    build: .
    image: &img img-two
    volumes:
      - .:/code
    ports:
      - "8010:8010"
    depends_on:
      - react-app
    env_file:
      - variables.env

  react-app:
    restart: always
    build: .
    image: *img
    command: yarn start
    env_file:
      - variables.env
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - "3050:3050"

Ниже приведена конфигурация базы данных, которую я установил во внешнем приложении django, которое я хочу подключить к БД, но я продолжаю получать connection refused ошибки, когда я пытаюсь запустить python manage.py runserver

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.environ.get("DB_NAME", "postgres"),
        "USER": os.environ.get("DB_USERNAME", "postgres"),
        "PASSWORD": os.environ.get("DB_PASSWORD", "postgres"),
        "HOST": os.environ.get("DB_HOSTNAME", "db"),
        "PORT": os.environ.get("DB_PORT", 5432),
    }
}

Есть идеи, как решить эту проблему? (Для справки, я также попробовал изменить HOST на localhost вместо db, но все равно получил те же ошибки connection refused)

Вернуться на верх