Развертывание в производство приложения Django - Azure

У меня есть приложение Django в репозитории Github. Через действие Github оно развертывается как приложение Python в Azure.

На портале Azure:

1- В настройках "Configuration > Application" я определил POST_BUILD_COMMAND как

python manage.py makemigrations && python manage.py migrate

как описано в Настройка приложения Linux Python для Azure App Service.

2- Я настроил слот развертывания и слот производства. Он предлагает опцию 'Swap', чтобы переместить живое приложение в слоте развертывания в production.

Однако у меня сложилось впечатление, что при этом не выполняется команда POST_BUILD_COMMAND для производственного приложения Django, оставляя базу данных без изменений - это означает, что производственный фронтенд получает новые поля/обновления, но миграции не происходит.

Каким образом лучше всего выполнять миграции в продакшене? Правильно ли будет установить в "Configurations > General settings > Startup Command" значение 'python manage.py makemigrations && python manage.py migrate'? Это сработает?

Какой лучший способ выполнения миграций в продакшене? - Azure Django

.
  • manage.py : файл для выполнения таких команд, как запуск сервера, создание миграций и т.д..
  • python manage.py makemigrations может использоваться для просмотра миграций, которые были выполнены.
  • python manage.py migrate используется для миграции
  • .
  • migrate - используется для применения и неприменения миграций.
  • makemigrations отвечает за создание новых миграций на основе внесенных вами изменений модели.

Если ваше приложение еще не имеет миграций, его необходимо изменить для использования миграций. Это создаст новую первую миграцию для вашего приложения. python manage.py makemigrations

python manage.py migrate - миграция данных будет запущена

  • Вы можете выполнять команды в сеансе SSH на портале Azure Перейдите в Azure Portal => Your Web App => Advanced Tools => Go => SSH
  • .

ИЛИ

Вы можете напрямую просмотреть URL, чтобы открыть SSH

https://<app-name>.scm.azurewebsites.net/webssh/host

enter image description here

 # Run database migrations
python manage.py migrate

Для получения дополнительной информации обратитесь к Rerun migrations in Azure, Deploy a Django Web App to Azure with connection to Azure и SO Thread

Лучшим способом выполнения миграции является использование конфигурации YAML.

  • Когда у нас есть требования к библиотекам, которые необходимо установить, находясь в производстве, будьте осторожны при миграции, потому что нам нужно игнорировать папку venv.

  • Создайте среду dev с живыми данными и убедитесь, что добавили переменные окружения базы данных на azure portal

    .
  • После того, как мы создадим переменные среды для базы данных, мы сможем получить живые данные в среду dev.

  • Создайте репо Production Environment и вместо того, чтобы снова создавать соединение с GitHub, возьмите отвод из dev репо.

  • Сделайте родительское репо как dev репо для prod репо. Используйте ту же методологию, которую вы использовали в документации.

  • Настройте конвейер на основе переменных окружения.

  • Создайте процедуру автоматизации для обновления производственной среды на интервальной основе.

    python manage.py makemigrations && python manage.py migrate

    .

Используйте приведенный выше блок кода для выполнения операций в dev. Используйте терминал портала Azure для создания файлов YAML и изменения параметров.

  • Это можно выполнить и с помощью VS Code. ( Лучший метод)

Документ, является идеальной ссылкой на поток для процедуры.

GitHub -> Azure Dev Repo -> Backup -> Create Prod Repo -> Migrate from Dev to Prod -> Exclude gitignore folder

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