@echo off REM =========================================== REM TODO管理系統 - 生產環境部署腳本 REM =========================================== echo. echo ======================================== echo TODO管理系統 - 生產環境部署 echo ======================================== echo. REM 檢查Docker是否運行 echo [INFO] 檢查Docker狀態... docker info >nul 2>&1 if %errorlevel% neq 0 ( echo [ERROR] Docker未運行,請啟動Docker Desktop後再執行此腳本 pause exit /b 1 ) echo [SUCCESS] Docker運行正常 REM 停止現有容器 echo. echo [INFO] 停止現有容器... docker stop todo-backend-prod todo-frontend-prod 2>nul docker rm todo-backend-prod todo-frontend-prod 2>nul REM 建置Docker鏡像 echo. echo [INFO] 建置Docker鏡像... echo [INFO] 建置後端鏡像... docker build -t todolist-backend:latest ./backend if %errorlevel% neq 0 ( echo [ERROR] 後端鏡像建置失敗 pause exit /b 1 ) echo [SUCCESS] 後端鏡像建置完成 echo [INFO] 建置前端鏡像... docker build -t todo-frontend:latest --build-arg NEXT_PUBLIC_API_URL=http://localhost:12011 ./frontend if %errorlevel% neq 0 ( echo [ERROR] 前端鏡像建置失敗 pause exit /b 1 ) echo [SUCCESS] 前端鏡像建置完成 REM 啟動服務 echo. echo [INFO] 啟動生產環境服務... docker-compose -f docker-compose.prod.yml up -d if %errorlevel% neq 0 ( echo [ERROR] 服務啟動失敗 pause exit /b 1 ) REM 等待服務啟動 echo [INFO] 等待服務啟動... timeout /t 10 /nobreak >nul REM 檢查服務狀態 echo. echo [INFO] 檢查服務狀態... docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | findstr todo- REM 健康檢查 echo. echo [INFO] 執行健康檢查... echo [INFO] 檢查後端API... curl -s -w "%%{http_code}" -o nul http://localhost:12011/api/health >nul 2>&1 if %errorlevel% equ 0 ( echo [SUCCESS] 後端API響應正常 ) else ( echo [WARNING] 後端API可能尚未完全啟動,請稍後手動檢查 ) echo [INFO] 檢查前端... curl -s -w "%%{http_code}" -o nul http://localhost:12012 >nul 2>&1 if %errorlevel% equ 0 ( echo [SUCCESS] 前端響應正常 ) else ( echo [WARNING] 前端可能尚未完全啟動,請稍後手動檢查 ) echo. echo ======================================== echo 部署完成! echo ======================================== echo. echo 服務地址: echo 前端: http://localhost:12012 echo 後端API: http://localhost:12011 echo. echo. echo 管理指令: echo 查看日誌: docker-compose -f docker-compose.prod.yml logs -f echo 停止服務: docker-compose -f docker-compose.prod.yml down echo 重啟服務: docker-compose -f docker-compose.prod.yml restart echo. pause