Экземпляр 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
в качестве имени БД.