71 lines
2.4 KiB
Python
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'),
|
|
}
|