Как передать переменные env в django в production
Я развертываю приложение Django с помощью Gunicorn. В моей Dev установке я использовал библиотеку dotenv
для импорта переменных окружения в верхнюю часть моего settings.py
следующим образом:
from dotenv import load_dotenv
load_dotenv()
У меня есть два файла настроек; один - базовые настройки (settings.py
), а другой - производственные (settings_prod.py
), которые переопределяют некоторые переменные таким образом:
from .settings import *
DEBUG = False
ALLOWED_HOSTS = [
'subdomain.example.com',
]
AUTH_PASSWORD_VALIDATORS = [
# ...
]
STATIC_URL = os.environ.get('STATIC_URL', '/static/')
STATIC_ROOT = os.environ.get('STATIC_ROOT', BASE_DIR / 'static')
Я загружаю этот файл в Gunicorn Service следующим образом:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=user
Group=user-group
WorkingDirectory=/home/myApp/core/app
Environment="DJANGO_SETTINGS_MODULE=application.settings_prod"
ExecStart=/home/myApp/core/app/venv/bin/gunicorn \
--log-level=debug \
--error-logfile /home/myApp/core/database/logs/gunicorn.errors.log \
--access-logfile /home/myApp/core/database/logs/gunicorn.log \
--workers 3 \
--bind unix:/run/gunicorn.sock \
application.wsgi:application
[Install]
WantedBy=multi-user.target
Я пробовал добавить EnvironmentFile=/home/myApp/core/app/.env
в служебный файл, но это не помогло