| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #!/bin/bash
- # 灵越智报部署脚本
- # 作者: lingyue
- # 版本: 2.0.0
- set -e
- # 颜色定义
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m' # No Color
- # 日志函数
- log_info() {
- echo -e "${GREEN}[INFO]${NC} $1"
- }
- log_warn() {
- echo -e "${YELLOW}[WARN]${NC} $1"
- }
- log_error() {
- echo -e "${RED}[ERROR]${NC} $1"
- }
- # 检查依赖
- check_dependencies() {
- log_info "检查依赖..."
-
- if ! command -v docker &> /dev/null; then
- log_error "Docker 未安装,请先安装 Docker"
- exit 1
- fi
-
- if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
- log_error "Docker Compose 未安装,请先安装 Docker Compose"
- exit 1
- fi
-
- log_info "依赖检查通过"
- }
- # 编译项目
- build_project() {
- log_info "开始编译项目..."
- cd backend
- mvn clean package -DskipTests
- if [ $? -ne 0 ]; then
- log_error "项目编译失败"
- exit 1
- fi
- cd ..
- log_info "项目编译成功"
- }
- # 停止现有服务
- stop_services() {
- log_info "停止现有服务..."
- docker-compose down || docker compose down
- log_info "服务已停止"
- }
- # 启动服务
- start_services() {
- local with_ocr=$1
-
- log_info "启动服务..."
-
- if [ "$with_ocr" = "true" ]; then
- log_info "启动包含 PaddleOCR 服务..."
- docker-compose --profile with-ocr up -d || docker compose --profile with-ocr up -d
- else
- log_info "启动基础服务(不包含 OCR)..."
- docker-compose up -d || docker compose up -d
- fi
-
- if [ $? -ne 0 ]; then
- log_error "服务启动失败"
- exit 1
- fi
-
- log_info "服务启动成功"
- }
- # 查看日志
- show_logs() {
- log_info "查看应用日志..."
- docker-compose logs -f lingyue-app || docker compose logs -f lingyue-app
- }
- # 检查服务状态
- check_status() {
- log_info "检查服务状态..."
- docker-compose ps || docker compose ps
- }
- # 显示帮助信息
- show_help() {
- cat << EOF
- 灵越智报部署脚本
- 使用方法:
- ./deploy.sh [选项]
- 选项:
- start 编译并启动所有服务(不包含 OCR)
- start-with-ocr 编译并启动所有服务(包含 PaddleOCR)
- stop 停止所有服务
- restart 重启所有服务
- logs 查看应用日志
- status 查看服务状态
- build 仅编译项目
- help 显示此帮助信息
- 示例:
- ./deploy.sh start # 启动基础服务
- ./deploy.sh start-with-ocr # 启动包含 OCR 的完整服务
- ./deploy.sh logs # 查看日志
- EOF
- }
- # 主函数
- main() {
- local action=${1:-help}
-
- case $action in
- start)
- check_dependencies
- build_project
- stop_services
- start_services false
- log_info "部署完成!"
- log_info "访问地址: http://localhost:8000"
- log_info "Swagger文档: http://localhost:8000/swagger-ui.html"
- log_info "Druid监控: http://localhost:8000/druid/ (用户名: admin, 密码: admin123)"
- log_info "RabbitMQ管理界面: http://localhost:15672 (用户名: admin, 密码: admin123)"
- log_info ""
- log_warn "提示: 使用 './deploy.sh logs' 查看日志"
- ;;
- start-with-ocr)
- check_dependencies
- build_project
- stop_services
- start_services true
- log_info "部署完成(包含 OCR 服务)!"
- log_info "访问地址: http://localhost:8000"
- log_info "PaddleOCR服务: http://localhost:8866"
- ;;
- stop)
- stop_services
- log_info "服务已全部停止"
- ;;
- restart)
- check_dependencies
- build_project
- stop_services
- start_services false
- log_info "服务重启完成"
- ;;
- logs)
- show_logs
- ;;
- status)
- check_status
- ;;
- build)
- build_project
- ;;
- help)
- show_help
- ;;
- *)
- log_error "未知选项: $action"
- show_help
- exit 1
- ;;
- esac
- }
- # 执行主函数
- main "$@"
|