deploy.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #!/bin/bash
  2. # 灵越智报部署脚本
  3. # 作者: lingyue
  4. # 版本: 2.0.0
  5. set -e
  6. # 颜色定义
  7. RED='\033[0;31m'
  8. GREEN='\033[0;32m'
  9. YELLOW='\033[1;33m'
  10. NC='\033[0m' # No Color
  11. # 日志函数
  12. log_info() {
  13. echo -e "${GREEN}[INFO]${NC} $1"
  14. }
  15. log_warn() {
  16. echo -e "${YELLOW}[WARN]${NC} $1"
  17. }
  18. log_error() {
  19. echo -e "${RED}[ERROR]${NC} $1"
  20. }
  21. # 检查依赖
  22. check_dependencies() {
  23. log_info "检查依赖..."
  24. if ! command -v docker &> /dev/null; then
  25. log_error "Docker 未安装,请先安装 Docker"
  26. exit 1
  27. fi
  28. if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
  29. log_error "Docker Compose 未安装,请先安装 Docker Compose"
  30. exit 1
  31. fi
  32. log_info "依赖检查通过"
  33. }
  34. # 编译项目
  35. build_project() {
  36. log_info "开始编译项目..."
  37. cd backend
  38. mvn clean package -DskipTests
  39. if [ $? -ne 0 ]; then
  40. log_error "项目编译失败"
  41. exit 1
  42. fi
  43. cd ..
  44. log_info "项目编译成功"
  45. }
  46. # 停止现有服务
  47. stop_services() {
  48. log_info "停止现有服务..."
  49. docker-compose down || docker compose down
  50. log_info "服务已停止"
  51. }
  52. # 启动服务
  53. start_services() {
  54. local with_ocr=$1
  55. log_info "启动服务..."
  56. if [ "$with_ocr" = "true" ]; then
  57. log_info "启动包含 PaddleOCR 服务..."
  58. docker-compose --profile with-ocr up -d || docker compose --profile with-ocr up -d
  59. else
  60. log_info "启动基础服务(不包含 OCR)..."
  61. docker-compose up -d || docker compose up -d
  62. fi
  63. if [ $? -ne 0 ]; then
  64. log_error "服务启动失败"
  65. exit 1
  66. fi
  67. log_info "服务启动成功"
  68. }
  69. # 查看日志
  70. show_logs() {
  71. log_info "查看应用日志..."
  72. docker-compose logs -f lingyue-app || docker compose logs -f lingyue-app
  73. }
  74. # 检查服务状态
  75. check_status() {
  76. log_info "检查服务状态..."
  77. docker-compose ps || docker compose ps
  78. }
  79. # 显示帮助信息
  80. show_help() {
  81. cat << EOF
  82. 灵越智报部署脚本
  83. 使用方法:
  84. ./deploy.sh [选项]
  85. 选项:
  86. start 编译并启动所有服务(不包含 OCR)
  87. start-with-ocr 编译并启动所有服务(包含 PaddleOCR)
  88. stop 停止所有服务
  89. restart 重启所有服务
  90. logs 查看应用日志
  91. status 查看服务状态
  92. build 仅编译项目
  93. help 显示此帮助信息
  94. 示例:
  95. ./deploy.sh start # 启动基础服务
  96. ./deploy.sh start-with-ocr # 启动包含 OCR 的完整服务
  97. ./deploy.sh logs # 查看日志
  98. EOF
  99. }
  100. # 主函数
  101. main() {
  102. local action=${1:-help}
  103. case $action in
  104. start)
  105. check_dependencies
  106. build_project
  107. stop_services
  108. start_services false
  109. log_info "部署完成!"
  110. log_info "访问地址: http://localhost:8000"
  111. log_info "Swagger文档: http://localhost:8000/swagger-ui.html"
  112. log_info "Druid监控: http://localhost:8000/druid/ (用户名: admin, 密码: admin123)"
  113. log_info "RabbitMQ管理界面: http://localhost:15672 (用户名: admin, 密码: admin123)"
  114. log_info ""
  115. log_warn "提示: 使用 './deploy.sh logs' 查看日志"
  116. ;;
  117. start-with-ocr)
  118. check_dependencies
  119. build_project
  120. stop_services
  121. start_services true
  122. log_info "部署完成(包含 OCR 服务)!"
  123. log_info "访问地址: http://localhost:8000"
  124. log_info "PaddleOCR服务: http://localhost:8866"
  125. ;;
  126. stop)
  127. stop_services
  128. log_info "服务已全部停止"
  129. ;;
  130. restart)
  131. check_dependencies
  132. build_project
  133. stop_services
  134. start_services false
  135. log_info "服务重启完成"
  136. ;;
  137. logs)
  138. show_logs
  139. ;;
  140. status)
  141. check_status
  142. ;;
  143. build)
  144. build_project
  145. ;;
  146. help)
  147. show_help
  148. ;;
  149. *)
  150. log_error "未知选项: $action"
  151. show_help
  152. exit 1
  153. ;;
  154. esac
  155. }
  156. # 执行主函数
  157. main "$@"