Django считывает только некоторые значения окружающей среды
У меня есть проект Django, развернутый с помощью Docker, и теперь проект не загружает все мои значения окружения, указанные в файле .env. Считываются только некоторые из них. Вот мой .env файл:
DJANGO_DEBUG=changeme(1/0)
DB_NAME=changeme
DB_USER=changeme
DB_PASS=changeme
SECRET_KEY=changeme
EMAIL_PASSWORD=changeme
EMAIL=email@example.com
DOMAIN=example.com
А в setting.py я получаю доступ к значениям таким образом:
DEBUG = bool(int(os.environ.get('DJANGO_DEBUG', 0)))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': os.environ.get('DB_HOST'),
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASS'),
}
}
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com.'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = os.environ.get('EMAIL')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD')
Все значения, связанные с базой данных, читаются правильно, также как и секретный ключ. Но остальные значения не читаются, и я не понимаю почему. В чем может быть проблема?
Проблема заключалась в том, что я не включил некоторые переменные среды в файл docker-compose.yml.
services:
app:
build:
context: .
restart: always
volumes:
- static-data:/vol/web
environment:
- DB_HOST=db
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASS=${DB_PASS}
- SECRET_KEY=${SECRET_KEY}
- DJANGO_DEBUG=${DJANGO_DEBUG}
- EMAIL=${EMAIL}
- EMAIL_PASSWORD=${EMAIL_PASSWORD}
- ALLOWED_HOSTS=${DOMAIN}
- CSRF_TRUSTED=${CSRF_TRUSTED}
depends_on:
- db
После включения всех переменных в раздел app > environment, все работает хорошо!