Container_commands не удается перенести базу данных django?

Если я удалю следующее:

container_commands:
  01_migrate:
    command: "source /var/app/venv/*/bin/activate && python manage.py migrate --no-input"
    leader_only: true

Приложение успешно развернуто.

Когда я eb ssh и пытаюсь запустить python manage.py migrate, я получаю следующую ошибку:

Traceback (последний последний вызов): Файл "manage.py", строка 22, in main() Файл "manage.py", строка 18, в main execute_from_command_line(sys.argv) Файл "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/core/management/init.py", строка 446, in execute_from_command_line utility.execute() Файл "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/core/management/init.py", строка 386, in execute settings.INSTALLED_APPS Файл "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/conf/init.py", строка 87, in getattr. self._setup(name) Файл "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/conf/init.py", строка 74, in _setup self._wrapped = Settings(settings_module) Файл "/var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/django/conf/init.py", строка 183, in init. mod = importlib.import_module(self.SETTINGS_MODULE) Файл "/usr/lib64/python3.8/importlib/init.py", строка 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) Файл "", строка 1014, в _gcd_import Файл "", строка 991, в _find_and_load Файл "", строка 975, в _find_and_load_unlocked Файл "", строка 671, в _load_unlocked Файл "", строка 783, в exec_module Файл "", строка 219, в _call_with_frames_removed Файл "/var/app/current/dca/dca/settings.py", строка 104, in 'NAME': os.environ['RDS_DB_NAME'], Файл "/usr/lib64/python3.8/os.py", строка 675, in getitem. raise KeyError(key) from None KeyError: 'RDS_DB_NAME'

Я просмотрел множество опубликованных ответов и попробовал почти все приведенные решения. Я все еще получаю те же ошибки. Я пытаюсь уже 4 часа.

Как я могу решить эту проблему?

ТИА

Ваша ошибка указывает на то, что EB испытывает трудности с поиском переменных окружения. Во время развертывания эти переменные окружения доступны. Однако при ssh'инге в ваш экземпляр вам придется импортировать их вручную. Вы можете найти документацию здесь

Одним из способов сделать это является использование инструмента get-config, который находится по адресу /opt/elasticbeanstalk/bin/get-config.

Вы можете использовать следующую команду для печати переменных окружения:

/opt/elasticbeanstalk/bin/get-config environment

Однако их все равно нужно экспортировать. Это можно сделать с помощью следующей команды:

export $(/opt/elasticbeanstalk/bin/get-config environment| xargs)

Теперь Django должен уметь находить переменные окружения, установленные в вашем окружении EB.

EDIT: Также вы можете экспортировать переменные окружения через:

export $(cat /opt/elasticbeanstalk/deployment/env | xargs) 

попробуйте это container_commands: 10_migrate: команда: |
источник $PYTHONPATH/activate pipenv run python ./manage.py migrate

Это активирует окружение python, которое EB использует для установки зависимостей Pipfile перед выполнением pipenv.

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

container_commands: 10_migrate: команда: | export $(cat /opt/elasticbeanstalk/deployment/env | xargs) источник $PYTHONPATH/activate pipenv run python ./manage.py migrate

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