Получение несуществующей базы данных при попытке контейнеризации приложения python с базой данных postgres, размещенной на GCP
Я пытаюсь контейнеризировать приложение python и оно имеет базу данных postgres, которая находится в облаке GCP. Но когда я создаю приложение, оно выдает ошибку, говоря, что база данных не существует. Я не могу понять, что происходит. Я могу подключиться к базе данных с помощью инструмента Dbeaver, но когда я запускаю файл docker. контейнер запускается, но в нем появляются журналы ошибок. Я добавил публичный ip моего ноутбука в gcp sql connections, но не могу понять, почему он выбрасывает эту ошибку
Я вижу журналы, в которых говорится
File "/usr/local/lib/python3.9/site-packages/django/db/backends/postgresql/base.py", line 187,
in get_new_connection
connection = Database.connect(**conn_params)
File "/usr/local/lib/python3.9/site-packages/psycopg2/__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: database "test-instance" does not exist
Файл докера, который я использовал
# Pull base image
FROM python:3.9
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY requirements.txt /code/
RUN pip install -r requirements.txt
# Copy project
COPY . /code/
файл settings.py как я обращаюсь к gcp db
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'test-instance',
'USER': 'postgres',
'PASSWORD': 'abcder',
'HOST': '35.224.136.9',
'PORT': '5432',
}
}
Как указано в моем комментарии, ОП путает Instance Name
и DB name
, которые являются разными вещами.
Instance
- это инфраструктура (сервер), на котором размещается DB Engine
и на котором размещаются БД.