Лучшие практики диктуют, что любое значение, которое является секретным, не должно быть жестко закодировано в каких-либо файлах, которые сохраняются в проекте или проверяются в системе управления версиями. Ваш файл конфигурации, скорее всего, будет сохранен в системе управления версиями, поэтому он не должен хранить секреты, а вместо этого загружать их из переменных среды, установленных во время выполнения приложения. Например, предположим, что вы настраиваете ретранслятор SMTP:
MAIL_PORT
- это значение, которое не является секретным и вряд ли изменится, поэтому это хороший кандидат для установки в вашем файле конфигурации.
MAIL_PASSWORD
- это секретное значение, которое вы не хотите сохранять в репозитории вашего проекта, поэтому его следует загружать из переменных среды хоста.
В этом примере ваш файл конфигурации может содержать записи, которые выглядят примерно так:
MAIL_PORT = 465
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
Помимо оценки того, является ли значение конфигурации секретным, также учтите, как часто значение будет изменения и насколько сложно будет внести это изменение. Все, что жестко запрограммировано в вашем файле конфигурации, потребует изменения файла и добавления новой фиксации в исходный элемент управления, возможно, даже запуска полного процесса конвейера CI / CD. Если бы вместо этого значение было загружено из переменных среды, то это значение можно было бы изменить, просто остановив приложение, экспортировав новое значение как переменную среды и перезапустив приложение.
Файлы Dotenv - это просто удобство для группировки нескольких переменных вместе и их автоматической загрузки для чтения вашей конфигурацией. Файл .env
не всегда используется, так как эти значения могут быть экспортированы вручную, когда приложение вызывается или обрабатывается другой системой, ответственной за запуск или масштабирование вашего приложения. Не проверяйте файлы .env
или .flaskenv
в системе управления версиями.