Экземпляр AWS Postgresql RDS "не существует" с помощью docker-compose и Django

Мой RDS и веб-контейнер не соединены.

Но я сделал все настройки, связанные с базой данных, в настройках Django, и я также правильно настроил AWS RDS.

Что я должен делать больше?

Это DATABASES файла настроек Django.

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": env("SQL_DATABASE"),
        "USER": env("SQL_USER"),
        "PASSWORD": env("SQL_PASSWORD"),
        "HOST": env("SQL_HOST"),
        "PORT": env("SQL_PORT"),
    }
}

Я пропустил docker-compose.yml с enginx-proxy или TLS.

Когда я тестировал в локальной среде, я создал и смонтировал контейнеры DB на docker-compose, но в среде prod я не создавал контейнеры DB, потому что я использую RDS. Будет ли это проблемой?

Пожалуйста, помогите мне.

(ps.Все PROJECT_NAME заменили фактическое имя проекта.)

Это мой docker-compose.yml

version: '3.8'

services:

  web:
    build:
      context: .
      dockerfile: prod.Dockerfile
    image: project:web
    command: gunicorn PROJECT_NAME.wsgi:application --bind 0.0.0.0:8000
    env_file:
      - envs/.env.prod
    volumes:
      - static_volume:/home/app/web/static
      - media_volume:/home/app/web/media
    expose:
      - 8000
    entrypoint:
      - sh
      - config/docker/entrypoint.prod.sh

volumes:
  static_volume:
  media_volume:


Вот какую ошибку я получил от docker

Наиболее вероятной причиной является то, что AWS RDS имя экземпляра БД отличается от PostgreSQL имени БД.

В соответствии с руководствомAWS RDS

В разделе Базы данных выберите имя нового экземпляра БД.

На консоли RDS появится информация о новом экземпляре БД. Экземпляр БД имеет состояние creating до тех пор, пока экземпляр БД не будет создан и готов к использованию. Когда состояние изменится на available, вы сможете подключиться к экземпляру БД. В зависимости от класса экземпляра БД и выделенного хранилища, доступность нового экземпляра может занять несколько минут.

Согласно PostgreSQL: Документация

dbname

Задает имя создаваемой базы данных. Имя должно быть уникальным среди всех баз данных PostgreSQL в этом кластере. По умолчанию создается база данных с тем же именем, что и у текущего пользователя системы.

По умолчанию dbname является postgres

Итак, вы можете попробовать postgres вместо db-PROJECT_NAME-ec2 в качестве имени БД.

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