103 lines
2.7 KiB
Batchfile
103 lines
2.7 KiB
Batchfile
@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 |