Files
fg-auto/app/config.py

71 lines
2.4 KiB
Python

import os
import sys
from datetime import datetime
# .env 파일 로드 (python-dotenv 사용)
# Docker 환경: docker-compose.yml에서 env_file로 환경 변수 주입 + volume mount로 .env 파일 접근
# 로컬 개발 환경: python-dotenv로 .env 파일 로드
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
TODAY = datetime.now().strftime('%Y%m%d')
def _get_required_env(key: str, description: str = "") -> str:
"""필수 환경 변수 조회. 없으면 에러 출력 후 종료"""
value = os.getenv(key)
if not value:
desc = f" ({description})" if description else ""
error_msg = f"[ERROR] 필수 환경 변수가 설정되지 않았습니다: {key}{desc}"
print(error_msg)
sys.exit(1)
return value
def _get_optional_env(key: str) -> str:
"""선택적 환경 변수 조회. 없으면 빈 문자열 반환"""
return os.getenv(key, '')
# 게시판 설정 (필수)
MAIN = {
'board': _get_required_env('BOARD_ID', '게시판 ID'),
'ca_name': _get_required_env('BOARD_CA_NAME', '게시판 카테고리'),
'subject': '',
'content': _get_required_env('BOARD_CONTENT', '게시판 기본 내용'),
'mb_id': _get_required_env('BOARD_MB_ID', '게시자 ID'),
'nickname': _get_required_env('BOARD_NICKNAME', '게시자 닉네임'),
'file1': '',
'file2': '',
}
# 데이터베이스 설정 (필수)
DB_CONFIG = {
'HOST': _get_required_env('DB_HOST', 'MySQL 호스트'),
'USER': _get_required_env('DB_USER', 'MySQL 사용자명'),
'DBNAME': _get_required_env('DB_NAME', 'MySQL 데이터베이스명'),
'PASS': _get_required_env('DB_PASSWORD', 'MySQL 비밀번호'),
'CHARSET': _get_optional_env('DB_CHARSET') or 'utf8mb4',
}
# FTP 설정 (필수)
FTP_CONFIG = {
'HOST': _get_required_env('FTP_HOST', 'FTP 호스트'),
'USER': _get_required_env('FTP_USER', 'FTP 사용자명'),
'PASS': _get_required_env('FTP_PASSWORD', 'FTP 비밀번호'),
'UPLOAD_DIR': _get_required_env('FTP_UPLOAD_DIR', 'FTP 업로드 디렉토리'),
}
# 날씨 API 서비스 키 (필수)
serviceKey = _get_required_env('SERVICE_KEY', '기상청 API 서비스 키')
# Mattermost 설정 (선택적 - 없어도 실행 가능하지만 알림은 미발송)
MATTERMOST_CONFIG = {
'URL': _get_optional_env('MATTERMOST_URL'),
'TOKEN': _get_optional_env('MATTERMOST_TOKEN'),
'CHANNEL_ID': _get_optional_env('MATTERMOST_CHANNEL_ID'),
}