Как перенести базу данных в django с помощью CI / CD с Google Cloud SQL? - PullRequest
0 голосов
/ 08 марта 2020

У меня настроен репозиторий django в gitlab, и я пытаюсь автоматизировать сборку и развертывание в облаке Google с помощью gitlab CI / CD.

Приложение должно быть развернуто в App Engine и должно использовать Облако SQL для динамического хранения данных c.

Проблема, с которой я сталкиваюсь при выполнении миграции на БД перед развертыванием моего приложения.

Я должен запустить ./manage.py migrate который подключается к облаку SQL.

Я прочитал, что мы можем использовать облачный прокси для подключения к облаку SQL и перенести базу данных. Но это вроде как взломать. Есть ли способ перенести мою базу данных через скрипт конвейера CI / CD?

Любая помощь приветствуется. Спасибо.

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Я также пытаюсь найти правильный способ сделать это. Еще один хакерский способ - просто добавить к нему вызов в файле настроек, который загружается вместе с вашим приложением. что-то вроде файла migrate.py делает:

from django.core.management import execute_from_command_line
execute_from_command_line(['./manage.py', 'migrate'])

, поэтому каждый раз, когда вы развертываете новую версию приложения, он также запускает миграцию.

Я хочу верить, что есть другие способы, не связанные с прокси, особенно если вы также хотите работать с частным ip для sql - тогда этот сценарий должен работать в том же vp c.

0 голосов
/ 09 марта 2020

При запуске Django в стандартной среде App Engine рекомендуемый способ перехода на базу данных - это запуск ./manage.py migrate непосредственно из консоли или с локального компьютера (для которого требуется использование облака sql proxy).

Если вы хотите, чтобы миграция базы данных была отделена от развертывания приложения и запущена на Gitlab CI / CD, вы можете сделать что-то вроде этого:

  • Использовать как базовое изображение google/cloud-sdk:latest
  • Получение учетных данных gcloud auth activate-service-account --key-file $GOOGLE_SERVICE_ACCOUNT_FILE
  • Загрузите cloudqlproxy с помощью wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy и сделайте его исполняемым chmod +x cloud_sql_proxy.
  • Запустите прокси ./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306 .
  • Наконец, запустите сценарий миграции.

Вы также можете создать собственное изображение docker, которое уже делает то, что описано выше, за кадром, результат будет таким же.

Если вы хотите прочитать больше по этому вопросу, я предлагаю взглянуть на следующие статьи link1 link2 .

...