Динамическое переключение базы данных в Django приложение, работающее внутри контейнера docker с использованием переменной среды - PullRequest
0 голосов
/ 18 июня 2020

Проблема :

Я хочу переключить базу данных Django после изменения переменных среды во время выполнения

Django файл app settings.py

PG_DB_USER = os.environ.get('PG_DB_USER', '')
PG_DB_NAME = os.environ.get('PG_DB_NAME', '')
PG_DB_PASS = os.environ.get('PG_DB_PASS', '')
PG_DB_HOST = os.environ.get('PG_DB_HOST', '')
PG_DB_PORT = os.environ.get('PG_DB_PORT', '')

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': PG_DB_NAME,
        'USER': PG_DB_USER,
        'PASSWORD': PG_DB_PASS,
        'HOST': PG_DB_HOST,
        'PORT': PG_DB_PORT,
    }
}

Существует файл docker -compose.yml, в котором перечислены различные службы вместе с соответствующей переменной среды. После успешного запуска контейнеров Docker я могу увидеть все переменные среды внутри контейнеров с помощью команды printenv или env.

Вещи, которые я пробовал:

Я пытаюсь переключить переменную окружения с помощью команды export PG_DB_NAME=**** внутри контейнера. Но после выполнения команд python manage.py shell, а затем import os and os.environ я не могу увидеть измененную переменную среды PG_DB_NAME=****.

Ps: всю эту команду я буду выполнять из сценария bash, чтобы изменить Django база данных во время выполнения.

Заранее спасибо. Любая помощь приветствуется.

...