.env를 crontab에서 인식하지 못하는 문제 수정
This commit is contained in:
70
app/config.py
Normal file
70
app/config.py
Normal file
@ -0,0 +1,70 @@
|
||||
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'),
|
||||
}
|
||||
Reference in New Issue
Block a user