Каждому проекту при запуске необходимо загружать соответствующую среду. Это можно сделать с помощью файлов dotenv или прямого выполнения оболочки и т. д.
Проблема в том, что это приводит к разногласиям — теперь каждый раз, когда вы запускаете двоичный файл, вам нужно обязательно загрузить и загрузить правильный файл env.< /p>
Таким образом, одним из подходов может быть автоматическое создание библиотек Python/typescript/[вставьте сюда язык] из этих сред. Это
- обеспечит безопасность типов для переменных env, чтобы вы знали, какие переменные доступны в конкретной среде и их типы.
- Автоматически загружайте соответствующую среду при импорте, поэтому вам не нужно устанавливать ее при запуске двоичного файла.
Я думаю примерно так:
Код: Выделить всё
# generated_env_lib.py
import os
# We can do this here at import time or later
# on instantiation of the class, tbd
with open('/path/to/src/.env', 'rt') as f:
for line in f.readlines():
name, value = line.split('=')
# Determine behavior if `name` is already present -
# overwrite or throw ValueError
os.environ[name] = value
# The following has been auto-generated previously with the contents
# of the env file
class Env:
@property
def x(self) -> int:
return os.environ['X']
# Finally, enforce all the Env properties are found in the
# `os.environ` map and are available to use on load.
Я опасаюсь включать файл .env в контейнер, поскольку он может быть не очень безопасным — технически люди не должны иметь доступа к данным в контейнере, который я помещаю, например. google cloud, но я думаю, что оно также не предназначалось для хранения секретов, поэтому, возможно, я не рассматриваю пути атаки.
Это плохая идея? Ждем любых предложений!
Подробнее здесь: https://stackoverflow.com/questions/792 ... ynamically
Мобильная версия