start.bat 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. @echo off
  2. REM RAG 系统 Docker 启动脚本 (Windows)
  3. REM 用法: start.bat [dev|prod]
  4. setlocal enabledelayedexpansion
  5. REM 切换到脚本所在目录
  6. cd /d "%~dp0"
  7. REM 设置默认命令
  8. set COMMAND=%1
  9. if "%COMMAND%"=="" set COMMAND=dev
  10. REM 检查 Docker 是否安装
  11. where docker >nul 2>nul
  12. if %ERRORLEVEL% neq 0 (
  13. echo [ERROR] Docker 未安装,请先安装 Docker Desktop
  14. exit /b 1
  15. )
  16. REM 检查 docker-compose 是否安装
  17. where docker-compose >nul 2>nul
  18. if %ERRORLEVEL% equ 0 (
  19. set DOCKER_COMPOSE_CMD=docker-compose
  20. ) else (
  21. docker compose version >nul 2>nul
  22. if %ERRORLEVEL% equ 0 (
  23. set DOCKER_COMPOSE_CMD=docker compose
  24. ) else (
  25. echo [ERROR] Docker Compose 未安装
  26. exit /b 1
  27. )
  28. )
  29. echo [INFO] Docker 和 Docker Compose 已安装
  30. REM 检查 .env 文件
  31. if not exist "..\\.env" (
  32. echo [WARN] .env 文件不存在,从 .env.example 复制
  33. if exist "..\\.env.example" (
  34. copy "..\\.env.example" "..\\.env" >nul
  35. echo [INFO] .env 文件已创建,请根据需要修改配置
  36. ) else (
  37. echo [ERROR] .env.example 文件不存在
  38. exit /b 1
  39. )
  40. )
  41. REM 执行命令
  42. if "%COMMAND%"=="dev" goto start_dev
  43. if "%COMMAND%"=="prod" goto start_prod
  44. if "%COMMAND%"=="stop" goto stop_all
  45. if "%COMMAND%"=="stop-dev" goto stop_dev
  46. if "%COMMAND%"=="stop-prod" goto stop_prod
  47. if "%COMMAND%"=="help" goto show_help
  48. if "%COMMAND%"=="-h" goto show_help
  49. if "%COMMAND%"=="--help" goto show_help
  50. echo [ERROR] 未知命令: %COMMAND%
  51. goto show_help
  52. :start_dev
  53. echo [INFO] 启动开发环境...
  54. %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml up -d --build
  55. if %ERRORLEVEL% neq 0 (
  56. echo [ERROR] 启动失败
  57. exit /b 1
  58. )
  59. echo [INFO] 等待服务启动...
  60. timeout /t 10 /nobreak >nul
  61. echo.
  62. echo [INFO] 开发环境已启动!
  63. echo.
  64. echo 访问地址:
  65. echo - API 文档: http://localhost:8000/docs
  66. echo - pgAdmin: http://localhost:5050 (admin@example.com / admin)
  67. echo.
  68. echo 查看日志:
  69. echo %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml logs -f
  70. echo.
  71. echo 停止服务:
  72. echo %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down
  73. goto end
  74. :start_prod
  75. echo [INFO] 启动生产环境...
  76. %DOCKER_COMPOSE_CMD% -f docker-compose.yml up -d --build
  77. if %ERRORLEVEL% neq 0 (
  78. echo [ERROR] 启动失败
  79. exit /b 1
  80. )
  81. echo [INFO] 等待服务启动...
  82. timeout /t 10 /nobreak >nul
  83. echo.
  84. echo [INFO] 生产环境已启动!
  85. echo.
  86. echo 访问地址:
  87. echo - API 文档: http://localhost:8000/docs
  88. echo.
  89. echo 查看日志:
  90. echo %DOCKER_COMPOSE_CMD% -f docker-compose.yml logs -f
  91. echo.
  92. echo 停止服务:
  93. echo %DOCKER_COMPOSE_CMD% -f docker-compose.yml down
  94. goto end
  95. :stop_all
  96. echo [INFO] 停止所有服务...
  97. %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down 2>nul
  98. %DOCKER_COMPOSE_CMD% -f docker-compose.yml down 2>nul
  99. echo [INFO] 服务已停止
  100. goto end
  101. :stop_dev
  102. echo [INFO] 停止开发环境...
  103. %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down
  104. echo [INFO] 开发环境已停止
  105. goto end
  106. :stop_prod
  107. echo [INFO] 停止生产环境...
  108. %DOCKER_COMPOSE_CMD% -f docker-compose.yml down
  109. echo [INFO] 生产环境已停止
  110. goto end
  111. :show_help
  112. echo 用法: %~nx0 [命令]
  113. echo.
  114. echo 命令:
  115. echo dev 启动开发环境
  116. echo prod 启动生产环境
  117. echo stop 停止所有服务
  118. echo stop-dev 停止开发环境
  119. echo stop-prod 停止生产环境
  120. echo help 显示帮助信息
  121. echo.
  122. echo 示例:
  123. echo %~nx0 dev # 启动开发环境
  124. echo %~nx0 prod # 启动生产环境
  125. echo %~nx0 stop # 停止所有服务
  126. goto end
  127. :end
  128. endlocal