Сбой развертывания Django elastic beanstalk CLI после добавления файлов .env в gitignore
Я новичок в Django/EB/Git и работал над проектом django и успешно разделил свои настройки и разделил .env файлы для разработки и производства, которые все работают как ожидалось и развернуты - см. следующую структуру проекта:
Структура проекта
project root
myapp
settings
__init__
base.py
dev.py
prod.py
.env.dev
.env.prod
.gitignore
manage.py
requiremnts.txt
Однако, как только я добавил свои файлы .env в файл .gitignore, я получил следующую ошибку с развертыванием в журналах eb (cfn-init-cmd.log):
.gitignore
# Elastic Beanstalk Files
.elasticbeanstalk/*
!.elasticbeanstalk/*.cfg.yml
!.elasticbeanstalk/*.global.yml
.env.dev
.env.prod
Ошибка: eb logs (cfn-init-cmd.log) FileNotFoundError: [Errno 2] Нет такого файла или каталога: '.env.prod'
Если я удалю .env.prod из файла .gitignore, то мой проект успешно развернется.
Более того, я читал в Интернете, что это может быть связано с тем, что я git add и comitting файл .env.prod в репо, однако, я полагаю, что я также исключил git add/commit, когда я начал заново и повторно создал git репо со следующей командой (команды запущены на локальном проекте):
git add --all -- :!.env.dev :!.env.prod
git commit -m "Initial commit"
Последующие:
eb deploy myproject-env
Смотрите мой файл конфигурации .ebextensions следующим образом:
.ebextensions/django.config
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: myproject.wsgi:application
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: "myproject.settings.prod"
aws:elasticbeanstalk:environment:proxy:staticfiles:
"/static": "static/"
packages:
yum:
python3-devel: []
mariadb-devel: []
container_commands:
01_collectstatic:
command: "source /var/app/venv/staging-LQM1lest/bin/activate && python manage.py collectstatic --noinput"
02_migrate:
command: "source /var/app/venv/staging-LQM1lest/bin/activate && python manage.py migrate --noinput"
leader_only: true
Я не был уверен, должен ли я добавлять какие-либо команды git в конфигурацию .ebextensions, но предположил, что это просто должно быть сделано в локальном git-репозитории, а затем отправлено на github, я также попробовал развертывание с codecommit и без него, но это ничего не изменило.
Я потратил около недели на то, чтобы разобраться во всем этом и наконец смог развернуть, и это, как я полагаю, должно было быть самым последним шагом, добавляющим .env файлы в .gitignore файл, я просто не уверен, что я упустил или сделал что-то неправильно с git repo.
Буду очень признателен за любую помощь/руководство по этому вопросу, заранее спасибо.
Elastic beanstalk использует файл .gitignore, если файл .ebignore не существует. Таким образом, вы можете использовать оба файла для управления файлами.
AWS doc говорит:
Вы можете указать EB CLI игнорировать определенные файлы в каталоге вашего проекта добавив в каталог файл .ebignore. Этот файл работает подобно файлу .gitignore.
...
Если .ebignore отсутствует, а .gitignore присутствует, EB CLI игнорирует файлы, указанные в .gitignore. Если .ebignore присутствует, EB CLI не читает .gitignore.
.Когда присутствует .ebignore, EB CLI не использует команды git для создания вашего пакета исходных текстов. Это означает, что EB CLI игнорирует файлы указанные в .ebignore, и включает все остальные файлы. В частности, он включает нефиксированные исходные файлы.