#!/bin/bash # QAUP 服务器端打包脚本 # 在Ubuntu打包服务器上运行,使用已构建的jar文件进行打包 set -e # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' NC='\033[0m' print_message() { echo -e "${1}${2}${NC}" } print_message $BLUE "=== QAUP 服务器端打包脚本 ===" # 检查jar文件是否存在 JAR_FILE="qaup-admin/target/qaup-admin.jar" if [ ! -f "$JAR_FILE" ]; then print_message $RED "❌ 未找到jar文件: $JAR_FILE" echo "请先在macOS上构建jar文件并上传到服务器" echo "或者将jar文件放到正确位置" exit 1 fi print_message $GREEN "✓ 找到jar文件: $JAR_FILE" # 检查Docker是否可用 if ! command -v docker &> /dev/null; then print_message $RED "❌ Docker 未安装" exit 1 fi # 准备镜像版本 POSTGRES_IMAGE="m.daocloud.io/docker.io/postgis/postgis:17-3.5-alpine" REDIS_IMAGE="m.daocloud.io/docker.io/library/redis:8.0-alpine" OPENJDK_IMAGE="m.daocloud.io/docker.io/library/eclipse-temurin:21-jre" print_message $BLUE "拉取基础镜像..." docker pull --platform linux/amd64 $POSTGRES_IMAGE docker pull --platform linux/amd64 $REDIS_IMAGE docker pull --platform linux/amd64 $OPENJDK_IMAGE # 导出镜像 print_message $BLUE "导出镜像..." mkdir -p qaup-deploy docker save $POSTGRES_IMAGE $REDIS_IMAGE $OPENJDK_IMAGE | gzip > qaup-deploy/images.tar.gz # 复制必要文件 print_message $BLUE "准备部署文件..." cp "$JAR_FILE" qaup-deploy/app.jar cp deploy/docker-compose.yml qaup-deploy/ cp deploy/config.yml qaup-deploy/ cp deploy/deploy-all.sh qaup-deploy/ cp deploy/deploy-update.sh qaup-deploy/ # 复制数据库相关文件 cp deploy/qaup_database_export.sql qaup-deploy/qaup_database_export.sql 2>/dev/null || echo "⚠ 完整初始数据文件不存在" cp deploy/database-init.sh qaup-deploy/ 2>/dev/null || echo "⚠ 数据库初始化脚本不存在" cp deploy/DeployGuide.md qaup-deploy/ # 创建部署包 PACKAGE_NAME="qaup-deploy-$(date +%Y%m%d-%H%M%S).tar.gz" tar -czf "$PACKAGE_NAME" -C qaup-deploy . print_message $GREEN "✅ 打包完成: $PACKAGE_NAME" print_message $BLUE "部署包大小: $(du -sh $PACKAGE_NAME | cut -f1)" echo "" echo "部署说明:" echo "1. 将 $PACKAGE_NAME 传输到目标服务器" echo "2. mkdir qaup-deploy && tar -xzf $PACKAGE_NAME -C qaup-deploy" echo "3. cd qaup-deploy && ./deploy-all.sh"