Files
TEMP_spec_system_V3/start-windows.bat
beabigegg 4f7f46b07a 2ND
2025-08-28 08:59:46 +08:00

206 lines
4.9 KiB
Batchfile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
REM ========================================
REM 暫時規範管理系統 V3 - Windows 啟動腳本
REM ========================================
echo.
echo =====================================
echo 暫時規範管理系統 V3 - Windows 啟動
echo =====================================
echo.
REM 檢查 Python 是否已安裝
python --version >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo [錯誤] Python 未安裝或未加入 PATH
echo 請安裝 Python 3.8+ 並重新執行此腳本
pause
exit /b 1
)
REM 檢查 Docker 是否已安裝並運行
docker --version >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo [警告] Docker 未安裝或未運行
echo 如需使用 Docker 模式,請先安裝並啟動 Docker Desktop
echo.
goto MANUAL_START
)
REM 檢查是否存在 docker-compose.yml
if not exist "docker-compose.yml" (
echo [警告] 找不到 docker-compose.yml 檔案
goto MANUAL_START
)
REM 檢查 .env 檔案
if not exist ".env" (
echo [提示] 未找到 .env 檔案,正在複製範例檔案...
copy ".env.example" ".env"
echo.
echo [重要] 請編輯 .env 檔案並設定正確的參數值:
echo - 資料庫連線資訊
echo - LDAP/AD 伺服器設定
echo - SMTP 郵件伺服器設定
echo.
set /p confirm="是否已完成 .env 檔案設定?(y/N): "
if /i not "%confirm%"=="y" (
echo 請先設定 .env 檔案後再執行此腳本
pause
exit /b 1
)
)
REM 提供啟動選項
echo 請選擇啟動模式:
echo.
echo [1] Docker 容器化部署 (推薦)
echo [2] 本地 Python 直接執行
echo [3] 僅啟動外部服務 (MySQL + ONLYOFFICE)
echo [4] 生產環境部署 (含 Nginx)
echo.
set /p choice="請輸入選項 [1-4]: "
if "%choice%"=="1" goto DOCKER_START
if "%choice%"=="2" goto MANUAL_START
if "%choice%"=="3" goto SERVICES_ONLY
if "%choice%"=="4" goto PRODUCTION_START
goto DOCKER_START
:DOCKER_START
echo.
echo =================================
echo 使用 Docker Compose 啟動系統...
echo =================================
echo.
REM 停止並清理舊的容器
echo [步驟 1] 清理舊容器...
docker-compose down
REM 重新構建並啟動服務
echo [步驟 2] 構建並啟動服務...
docker-compose up --build -d
REM 等待服務啟動
echo [步驟 3] 等待服務啟動...
timeout /t 30 /nobreak
REM 初始化資料庫
echo [步驟 4] 初始化資料庫...
docker-compose exec app python init_db.py --auto-yes
REM 顯示狀態
echo [步驟 5] 檢查服務狀態...
docker-compose ps
echo.
echo ============================
echo 系統啟動完成!
echo ============================
echo.
echo 服務訪問地址:
echo - 主系統http://localhost:5000
echo - ONLYOFFICEhttp://localhost:8080
echo - MySQLlocalhost:3306
echo.
echo 查看日誌docker-compose logs -f
echo 停止服務docker-compose down
echo.
goto END
:SERVICES_ONLY
echo.
echo ===============================
echo 僅啟動外部服務...
echo ===============================
echo.
docker-compose up -d mysql onlyoffice
echo.
echo 外部服務已啟動!
echo - MySQLlocalhost:3306
echo - ONLYOFFICEhttp://localhost:8080
echo.
echo 請使用以下命令啟動 Flask 應用:
echo python app.py
echo.
goto END
:PRODUCTION_START
echo.
echo ===============================
echo 生產環境部署 (含 Nginx)...
echo ===============================
echo.
docker-compose --profile production up --build -d
echo.
echo 生產環境已啟動!
echo - 系統入口http://localhost (透過 Nginx)
echo - 直接訪問http://localhost:5000
echo.
goto END
:MANUAL_START
echo.
echo ===============================
echo 本地 Python 環境啟動...
echo ===============================
echo.
REM 檢查虛擬環境
if exist "venv\Scripts\activate.bat" (
echo [步驟 1] 啟用虛擬環境...
call venv\Scripts\activate.bat
) else (
echo [警告] 未找到虛擬環境,建議先建立:
echo python -m venv venv
echo venv\Scripts\activate
echo pip install -r requirements.txt
echo.
)
REM 安裝依賴
echo [步驟 2] 檢查並安裝依賴...
pip install -r requirements.txt
REM 檢查外部服務
echo [步驟 3] 檢查外部服務...
echo.
echo [重要提醒] 請確保以下服務已啟動:
echo.
echo 1. MySQL 資料庫伺服器
echo - 可使用: docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
echo.
echo 2. ONLYOFFICE Document Server
echo - 可使用: docker run -d -p 8080:80 onlyoffice/documentserver
echo.
echo 3. LDAP/AD 伺服器 (如果適用)
echo 4. SMTP 郵件伺服器 (如果適用)
echo.
set /p confirm="外部服務是否已準備就緒?(y/N): "
if /i not "%confirm%"=="y" (
echo 請先啟動必要的外部服務
pause
exit /b 1
)
REM 初始化資料庫
echo [步驟 4] 初始化資料庫...
python init_db.py
REM 啟動應用
echo [步驟 5] 啟動 Flask 應用...
echo.
echo 啟動中... (Ctrl+C 停止)
python app.py
goto END
:END
echo.
pause