feat(kis): 토큰 디스크 캐시 + restart.bat env 재로드
토큰 발급 1분/1일 제한 (EGW00133 등 403) 회피: - _load_disk_cache / _save_disk_cache 로 /app/.cache/kis_token.json 영속화 · ./backend:/app 바인드 마운트로 호스트 backend/.cache/ 에 저장 · backend/.cache/ 는 .gitignore 에 이미 포함됨 (secret 비커밋) · app_key prefix 캐시 무효화 키 (.env 갱신 시 자동 폐기) · atomic write (tmp → rename) + 0600 권한 - get_token: 메모리 → 디스크 → 신규 발급 순으로 fallback - 컨테이너 재기동해도 24시간 유효 토큰 재사용 → 발급 폭주 방지 restart.bat: - restart → up -d --force-recreate --no-deps backend web · restart 는 env_file 재로드 안 함 (.env 의 KIS_APP_KEY 변경이 무시됨) · up -d 는 새 인스턴스 생성하며 env_file 다시 읽음 · --no-deps 로 db 는 절대 건드리지 않음 (postgres_data 영속)
This commit is contained in:
18
restart.bat
18
restart.bat
@@ -58,13 +58,19 @@ if "%RUN_COUNT%"=="0" (
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM 4) backend + web 만 재시작 — db 는 건드리지 않음.
|
||||
REM docker compose restart 는 depends_on.condition: service_healthy 를 지키지 않으므로
|
||||
REM db 까지 같이 재시작하면 backend lifespan 부팅 시드가 db 준비 전에 실행될 수 있다.
|
||||
REM db 는 상태 (postgres_data 볼륨) 가 영속이라 재시작할 이유도 없다.
|
||||
REM 4) backend + web 만 재기동 — db 는 건드리지 않음 (--no-deps).
|
||||
REM
|
||||
REM 왜 `restart` 가 아니라 `up -d --force-recreate` 인가:
|
||||
REM - `docker compose restart` 는 기존 컨테이너를 stop/start 만 한다. 그래서
|
||||
REM `.env` 변경 (예: KIS_APP_KEY 갱신) 이 반영되지 않는다. env_file 은
|
||||
REM 컨테이너 "생성" 시점에만 읽힌다.
|
||||
REM - `up -d --force-recreate` 는 새 컨테이너 인스턴스를 만들어서 env_file 을
|
||||
REM 다시 읽는다. 이게 사용자가 .env 만 고치고 restart.bat 돌렸을 때 직관에 맞는다.
|
||||
REM - `--no-deps` 로 db 는 절대 건드리지 않음. db 는 postgres_data 볼륨이 영속이라
|
||||
REM 재기동할 이유 없고, depends_on.condition: service_healthy 와 무관하게 안전.
|
||||
echo.
|
||||
echo === docker compose restart backend web ===
|
||||
docker compose %COMPOSE_FILES% restart backend web
|
||||
echo === docker compose up -d --force-recreate --no-deps backend web ===
|
||||
docker compose %COMPOSE_FILES% up -d --force-recreate --no-deps backend web
|
||||
if errorlevel 1 (
|
||||
echo [ERROR] restart 실패.
|
||||
pause
|
||||
|
||||
Reference in New Issue
Block a user