Миграции Django больше не выполняются на aws
Я размещаю сайт на elastic beanstalk и у меня есть файл 01_migrate.sh в .platform/hooks/postdeploy для миграции изменений модели в базу данных postgres на Amazon RDS:
#!/bin/sh
source /var/app/venv/staging-LQM1lest/bin/activate
python /var/app/current/manage.py migrate --noinput
python /var/app/current/manage.py createsu
python /var/app/current/manage.py collectstatic --noinput
Раньше это работало хорошо, но теперь, когда я проверяю журнал hooks, хотя кажется, что файл найден, нет никакого вывода, указывающего на то, что команда migrate была выполнена
т.е. раньше я получал следующее, даже если не было новых миграций:
2022/03/29 05:12:56.530728 [INFO] Running command .platform/hooks/postdeploy/01_migrate.sh
2022/03/29 05:13:11.872676 [INFO] Operations to perform:
Apply all migrations: account, admin, auth, blog, contenttypes, home, se_balance, sessions, sites, socialaccount, taggit, users, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
Running migrations:
No migrations to apply.
Found another file with the destination path 'favicon.ico'. It will be ignored since only the first encountered file is collected. If this is not what you want, make sure every static file has a unique path.
Тогда как сейчас я просто получаю
2022/05/23 08:47:49.602719 [INFO] Running command .platform/hooks/postdeploy/01_migrate.sh
Found another file with the destination path 'favicon.ico'. It will be ignored since only the first encountered file is collected. If this is not what you want, make sure every static file has a unique path.
Я не знаю, что произошло, чтобы вызвать это изменение. Потенциально важно то, что eb deploy перестал находить файл 01_migrate.sh, поэтому мне пришлось переместить папку и ее содержимое .platform/hooks/postdeploy/01_migrate.sh в родительский каталог, после чего она снова смогла его найти.
Согласно документации по платформенным крючкам:
Все файлы должны иметь разрешение execute. Используйте chmod +x для установки разрешения execute на ваши hook-файлы. Для всех версий платформ на базе Amazon Linux 2, выпущенных 29 апреля 2022 года или позже, Elastic Beanstalk автоматически предоставляет права на выполнение всем скриптам хуков платформы. В этом случае вам не нужно вручную предоставлять разрешения на выполнение.
.
Возможно, права доступа к вашему скрипту изменились после локального перемещения файла.
Попробуйте снова установить исполняемые разрешения для вашего скрипта - chmod +x 01_migrate.sh - и повторно развернуть ваше приложение.