설정이 .env(시크릿)+toml(설정)로 갈려 있던 것을 config.local.toml 하나로 통합. DB 비번이 이미 toml 에 있어 분리 기준이 임의적이었고, backend(하우스 패턴)도 toml 단일이라 일관성 확보. 환경별로 바뀌는 값(DB_HOST 등)만 env override 유지. - config_models: NaverConfig(keys 로테이션)·OpenAIConfig·DecodoConfig 추가 - server_configs: 3개 로드, load_dotenv 제거(python-dotenv 의존성도 제거) - proxy/naver/similarity/keyword/worker_main: os.environ → config 객체 참조 - config.local.toml.example: [NaverConfig]/[OpenAIConfig]/[DecodoConfig] 섹션 - .env/.env.example 삭제, README/주석 갱신 (배포는 toml 마운트 or env override) - tests: DecodoConfig 기반으로 갱신 → 전체 44/44 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45 lines
1.8 KiB
Python
45 lines
1.8 KiB
Python
import os
|
|
|
|
from config.config_loader import Configs
|
|
from config.config_models import (
|
|
WebServerConfig, LogConfig, MainDBConfig, NaverConfig, OpenAIConfig, DecodoConfig,
|
|
)
|
|
|
|
# 실행 환경 결정 (기본 local). 환경변수 APP_ENV 로 변경.
|
|
APP_ENV = os.environ.get("APP_ENV", "local")
|
|
|
|
_config_dir = os.path.dirname(__file__)
|
|
_config_file = os.path.join(_config_dir, f"config.{APP_ENV}.toml")
|
|
|
|
# 운영 전제: 항상 APP_ENV=local 로 띄운다 → config.local.toml 사용 (test/docker 도 local 로 실행).
|
|
if not os.path.exists(_config_file):
|
|
raise FileNotFoundError(f"설정 파일이 없습니다: {_config_file} (APP_ENV={APP_ENV}). APP_ENV=local 로 실행하세요.")
|
|
|
|
configs = Configs(_config_file)
|
|
|
|
web_server_config: WebServerConfig = configs.get(WebServerConfig)
|
|
log_config: LogConfig = configs.get(LogConfig)
|
|
main_db_config: MainDBConfig = configs.get(MainDBConfig)
|
|
# 시크릿 포함 설정도 TOML 로 통합. 섹션이 없으면 기본값(빈/비활성).
|
|
naver_config: NaverConfig = configs.get(NaverConfig) or NaverConfig()
|
|
openai_config: OpenAIConfig = configs.get(OpenAIConfig) or OpenAIConfig()
|
|
decodo_config: DecodoConfig = configs.get(DecodoConfig) or DecodoConfig()
|
|
|
|
|
|
# DB 접속 env override (config.local.toml 유지, 도커에서 host 만 교체). 로컬은 env 미설정 → toml 그대로.
|
|
def _apply_db_env_override(cfg: MainDBConfig):
|
|
h = os.environ.get("DB_HOST")
|
|
if h:
|
|
cfg.write_host = cfg.read_host = h
|
|
if os.environ.get("DB_PORT"):
|
|
cfg.write_port = cfg.read_port = int(os.environ["DB_PORT"])
|
|
if os.environ.get("DB_USER"):
|
|
cfg.write_id = cfg.read_id = os.environ["DB_USER"]
|
|
if os.environ.get("DB_PASSWORD"):
|
|
cfg.write_pw = cfg.read_pw = os.environ["DB_PASSWORD"]
|
|
if os.environ.get("DB_NAME"):
|
|
cfg.name = os.environ["DB_NAME"]
|
|
|
|
|
|
_apply_db_env_override(main_db_config)
|