Как развернуть базу данных Django PostgreSQL в Google Cloud SQL (App Engine) - PullRequest
0 голосов
/ 02 августа 2020

Это мое первое развертывание Django в Google App Engine flexible.

После развертывания все содержимое stati c отображается правильно, но как только запрос попадает в код ORM, происходит сбой (ошибка сервера 503). Я использую PostgreSQL и думаю, что правильно привязываю его к своим settings.py и app.yaml
DB_HOST: '/cloudsql/my-app:us-central1:my-app-postgresql'.
DB_NAME: 'my-db' ...

Нужно ли мне знать что-то особенное о развертывание Django PostgreSQL в App Engine? Во время развертывания все таблицы и данные будут воссозданы, верно?

Наконец, я развертываю с DEBUG = True и вижу ProgrammingError at / the "my-app_my-app" relationship does not exist.

Как мне экспортировать всю свою базу данных в Google Cloud SQL база данных?

На основе этого похоже, что я не смогу использовать ORM. Обязательно ли использовать «Django Nonrel»?

Ответы [ 2 ]

1 голос
/ 02 августа 2020

При поиске кажется, что перенос базы данных противопоставляется стадии прокси-соединения благодаря файлу cloud_sql_proxy.exe. но я удалил БД и безуспешно возобновил этот шаг.

Наконец, мое решение состоит из 2 шагов:

  1. После развертывания подключитесь в S SH к:
    Из консоли Google> App Engine> Экземпляры> S SH> Отобразите команду gcloud (быстрее) и скопируйте команду.
    • В gcould SDK:
    Подключитесь к своему экземпляру с помощью скопируйте команду, затем:
    sudo docker ps и скопируйте свое приложение CONTAINER ID
    sudo docker exec -it <CONTAINER ID> /bin/bash
    python3 manage.py makemigrations
    python3 manage.py migrate
    python3 manage.py createsuperuser

Это создаст все необходимые таблицы. Если у вас нет данных в вашем локальном postgreSql, все готово, в противном случае шаг 2.

Сделайте дамп вашей базы данных и импортируйте ее в Cloud SQL ( do c)
• Из вашего локального дампа вашу postgre базу данных с:
pg_dump -h localhost -U postgres my_database_name | gzip > backup.gz
• Из корзины загрузите файл backup.gz
• Из экземпляра Postgres в SQL Cloud импортируйте дамп из своей корзины.

Не забудьте удалить его из корзины, если он находится в папке publi c.

0 голосов
/ 02 августа 2020

Сегодня у меня была такая же проблема, как и у вас, и я ее решил.

Если вы любите меня, это немного ново для всех облачных вещей, есть одно правило, которое нужно запомнить, по умолчанию все заблокировано, занесен в черный список. Это означает, что по умолчанию ваша служба App Engine не имеет права подключаться к вашей БД. Вот почему у вас 503, потому что запрос отклонен.

2 способа решить. Используя частный IP-адрес вашей БД или publi c IP. Я выбираю частный IP, потому что запрос остается в моем VP C, что делает его более безопасным.

Здесь документация GCP

Но поскорее:

  1. У меня есть create VP C Connector в том же регионе, что и мой проект.

  2. Я добавил VP C коннектор к моему файлу app.yml

    vpc_access_connector: name: projects / my-project-12345 / locations / europe-west1 / connector / my-connector

И это работает как шарм!

PS: Кроме того, если вы, как я, провели 1000000 тестов, не забудьте удалить все неиспользуемые версии вашего приложения, потому что я читал, что это стоит $.

...