From 89651251a4845200099703c8885b7f8044c7fc26 Mon Sep 17 00:00:00 2001 From: tkrmagid Date: Thu, 21 May 2026 21:03:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20restart.bat=20=EC=B6=94=EA=B0=80=20(?= =?UTF-8?q?=EC=9E=AC=EB=B9=8C=EB=93=9C=20=EC=97=86=EC=9D=B4=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=EB=A7=8C=20=EC=9E=AC=EC=8B=9C?= =?UTF-8?q?=EC=9E=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build.bat 은 이미지 재빌드 포함 — Dockerfile / pyproject.toml / package*.json / compose 설정 같은 의존성/이미지 구성이 바뀌었을 때 사용. restart.bat 은 docker compose restart 만 호출 — backend/app/, web/app/ 안의 코드만 바뀐 경우 사용. 바인드 마운트 (./backend:/app, ./web:/app) 덕에 새 코드가 즉시 컨테이너에서 보이고, 재시작으로 lifespan 부팅 시드도 재실행된다. 사용 가이드: git pull 후 변경 파일이 - pyproject.toml / Dockerfile / package*.json → build.bat - app/ 코드만 → restart.bat --- restart.bat | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 restart.bat diff --git a/restart.bat b/restart.bat new file mode 100644 index 0000000..cd8791d --- /dev/null +++ b/restart.bat @@ -0,0 +1,85 @@ +@echo off +REM stock_chart_site - Windows 재시작 스크립트 +REM +REM build.bat 와의 차이: +REM - build.bat: 이미지 재빌드 포함. Dockerfile / pyproject.toml / package*.json / +REM compose 설정 등 의존성/이미지 구성이 바뀌었을 때 사용. +REM - restart.bat: 재빌드 없이 컨테이너만 재시작. backend/app/ 또는 web/app/ 안의 +REM 코드만 바뀐 경우. docker-compose.yml 의 바인드 마운트 (./backend:/app, +REM ./web:/app) 덕에 새 코드가 즉시 컨테이너 안에서 보이고, 재시작으로 +REM lifespan (부팅 시드 등) 도 다시 돌릴 수 있다. +REM +REM 즉 일반적으로 git pull 후: +REM - pyproject.toml / Dockerfile / package*.json 변경 있음 → build.bat +REM - app/ 코드만 변경 → restart.bat + +setlocal enabledelayedexpansion +cd /d "%~dp0" + +echo === stock_chart_site restart === + +REM 1) Docker 확인 +where docker >nul 2>&1 +if errorlevel 1 ( + echo [ERROR] docker 명령을 찾을 수 없습니다. Docker Desktop 설치/실행을 확인하세요. + pause + exit /b 1 +) +docker info >nul 2>&1 +if errorlevel 1 ( + echo [ERROR] Docker Desktop이 실행 중이 아닙니다. + pause + exit /b 1 +) + +REM 2) GPU 감지 (build.bat 과 동일 — compose 파일 조합 일치 위해) +set USE_GPU=0 +where nvidia-smi >nul 2>&1 +if not errorlevel 1 ( + nvidia-smi >nul 2>&1 + if not errorlevel 1 set USE_GPU=1 +) + +if "%USE_GPU%"=="1" ( + echo [GPU] NVIDIA GPU detected. Using GPU profile. + set COMPOSE_FILES=-f docker-compose.yml -f docker-compose.gpu.yml +) else ( + echo [CPU] NVIDIA GPU not detected. Using CPU profile. + set COMPOSE_FILES=-f docker-compose.yml +) + +REM 3) 컨테이너 살아있는지 확인 — 없으면 build.bat 안내 +docker compose %COMPOSE_FILES% ps --status running --quiet >nul 2>&1 +for /f %%i in ('docker compose %COMPOSE_FILES% ps --status running --quiet 2^>nul ^| find /v /c ""') do set RUN_COUNT=%%i +if "%RUN_COUNT%"=="0" ( + echo [INFO] 실행 중인 컨테이너가 없습니다. 처음이거나 down 된 상태입니다. + echo build.bat 으로 빌드 + 기동하세요. + pause + exit /b 1 +) + +REM 4) 재시작 (전체 — backend lifespan 부팅 시드, web next dev 모두 새로 시작) +echo. +echo === docker compose restart === +docker compose %COMPOSE_FILES% restart +if errorlevel 1 ( + echo [ERROR] restart 실패. + pause + exit /b 1 +) + +echo. +echo === 상태 === +docker compose %COMPOSE_FILES% ps + +echo. +echo 접속: +echo Web http://localhost:3000 +echo Backend http://localhost:8000/health +echo DB ext http://localhost:8000/health/db +echo. +echo 로그 보기: docker compose logs -f backend +echo 정지: docker compose down +echo. +pause +endlocal