Веб-приложение Azure не копирует код из tmp в home
Я развертываю приложение Django в Azure Web App через Github Actions. Код развертывается в папку tmp, но никогда не копируется в wwwroot. Что может быть причиной этого?
Для тех, кто может столкнуться с такой же проблемой, особенно с приложениями Django, я нашел следующее обходное решение:
После изучения того, как на самом деле работает сборка Oryx, я понял, что код копируется в wwwroot - но в виде tarball. Затем код извлекается в tmp и выполняется в этой папке. Это создает проблемы с запуском миграций django, поскольку папка миграций не сохраняется в том месте, откуда запускается код, т.е. вы не можете запускать миграции автоматически из папки tmp (потому что, если вы не помещаете свои миграции в контроль исходников, здесь нет истории миграций). и вы не сможете запустить миграции из wwwroot (потому что новый код существует только в tarball). Итак, чтобы сохранить историю миграций, вам нужно:
- Распакуйте файл output.tar.gz полностью в wwwroot и перезапишите существующие файлы. ИЛИ
- Выполните 1. ONCE, чтобы подготовить структуру проекта к выполнению миграций в wwwroot, и после этого скопируйте только файлы, необходимые для обнаружения изменений базы данных (в моем случае settings.py, forms.py, models.py и admin.py) из tmp в wwwroot. Это можно сделать автоматически, отредактировав команду запуска.