Получение несуществующей базы данных при попытке контейнеризации приложения 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 и на котором размещаются БД.

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