Не удается перенести базу данных, поскольку переменные окружения недоступны. - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я сталкиваюсь с довольно раздражающей проблемой с моим сервером Django в AWS Beanstalk.

Конечные точки моей базы данных и хранилища S3, псевдонимы учетных записей и ключи существуют как переменные env, поэтому, например, я хотел бы получить доступ к своей базе данных следующим образом

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ['RDS_DB_NAME'],
        'USER': os.environ['RDS_USERNAME'],
        'PASSWORD': os.environ['RDS_PASSWORD'],
        'HOST': os.environ['RDS_HOSTNAME'],
        'PORT': os.environ['RDS_PORT'],
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

Проблема возникает, когда мне нужновнести изменения в мою модель.Я хотел бы иметь возможность запускать миграции на Beanstalk после каждого обновления, поэтому у меня есть это в моем конфигурационном файле ebextensions.

container_commands:
  01_migrate:
    command: 'source /opt/python/run/venv/bin/activate && django-admin.py makemigrations'
    command: 'source /opt/python/run/venv/bin/activate && django-admin.py migrate'
    leader_only: true

Но это не работает, так как каким-то образом я получаю ошибку, что средаПеременные, которые мне нужны, не существуют на данном этапе!Поэтому, если я хочу выполнить мою команду контейнера, мне нужно будет выставить мои переменные env для моего settings.py.Теперь это полностью противоречит цели переменных env.

Почему я получаю эту ошибку и есть ли способ обойти это?

1 Ответ

0 голосов
/ 05 ноября 2018

Вы, вероятно, должны определить свои env-переменные, используя расширения.Они устанавливаются до выполнения контейнерных команд.Для этого создайте файл .config со следующими строками:

option_settings:
  aws:elasticbeanstalk:application:environment:
    FOO: bar
...