Tigshop 使用教程

项目更新(linux docker 更新)

手动更新

下载代码

下载最新的代码

SQL 更新

下载下来的代码会有 sql 文件,按需进行执行

image.png

比如你的版本是 2.0.6 。

那你就需要执行 这三个,按顺序执行
2.0.6-2.0.7update.sql
2.0.7-2.0.8update.sql
2.0.9-2.1.0update.sql

前端更新

找到之前部署目录。可以先将文件进行压缩备份后再操作

  1. 解压下载下来最新的代码
  2. 替换部署目录的 public 文件

image.png

后端更新

总共有两个项目,两个项目都需要操作一遍

  • adminapi
  • api
  1. 从部署的环境中获取配置文件(替换 adminapi 项目和 api 项目的配置文件)

  2. 替换下载下来最新版本中的

image.png

执行打包命令 mvn clean package -DskipTests 打包生成 jar 包,替换服务器中的文件

执行完成后会生成两个文件,到对应目录中找到对应文件,替换部署文件

image.png

重启后端项目

关闭这两个项目并重新启动

image.png

脚本更新(使用命令脚本更新)

该命令需要安装 java21 和 maven 3.9 +

下载最新的代码

SQL 更新

下载下来的代码会有 sql 文件,按需进行执行

image.png

比如你的版本是 2.0.6 。

那你就需要执行 这三个,按顺序执行
2.0.6-2.0.7update.sql
2.0.7-2.0.8update.sql
2.0.9-2.1.0update.sql

上传更新的压缩包到服务器

执行脚本

sh update.sh

按提示输入对应文件目录即可

image.png

脚本如下

#!/bin/bash

set -e  # 出错退出
echo "===== 项目更新脚本启动 ====="

# 1. 输入更新 zip 包
read -p "请输入更新 zip 文件路径(例如 /app/java-b2b2c-overseas-v2.1.1-20250604170820.zip): " ZIP_FILE
if [[ ! -f "$ZIP_FILE" ]]; then
  echo "文件 $ZIP_FILE 不存在"
  exit 1
fi

# 2. 输入部署目录
read -p "请输入部署文件夹根目录(例如 /app/java-b2b2c-overseas): " DEPLOY_DIR
if [[ ! -d "$DEPLOY_DIR" ]]; then
  echo "目录 $DEPLOY_DIR 不存在"
  exit 1
fi

# 获取项目名(比如 /app/java-b2b2c-overseas -> java-b2b2c-overseas)
PROJECT_NAME=$(basename "$DEPLOY_DIR")
BACKUP_FILE="${PROJECT_NAME}_backup_$(date +%Y%m%d_%H%M%S).tar.gz"

echo " 备份部署目录: $DEPLOY_DIR -> $BACKUP_FILE"
tar -c** "$BACKUP_FILE" -C "$(dirname "$DEPLOY_DIR")" "$PROJECT_NAME"

# 3. 解压 zip 文件
TEMP_DIR="./temp_update_$$"
mkdir "$TEMP_DIR"
echo " 解压更新包到临时目录 $TEMP_DIR"
unzip -q "$ZIP_FILE" -d "$TEMP_DIR"
echo " 解压完成"

# 4. 拷贝文件(如有更新代码等)
echo "拷贝配置文件到更新目录"
# 要拷贝的配置文件名(可以按需添加更多)
CONFIG_FILES=("application.yaml" "application-docker.yaml")
# 模块目录(相对 DEPLOY_DIR)
MODULE_DIRS=("tigshop-adminapi" "tigshop-api")
# 遍历每个模块目录和配置文件
for module in "${MODULE_DIRS[@]}"; do
  for cfg in "${CONFIG_FILES[@]}"; do
    SRC_FILE="$DEPLOY_DIR/$module/src/main/resources/$cfg"
    echo "检查路径:$SRC_FILE"
    if [[ -f "$SRC_FILE" ]]; then
      DEST_DIR="$TEMP_DIR/$module/src/main/resources"
      mkdir -p "$DEST_DIR"
      cp "$SRC_FILE" "$DEST_DIR/"
      echo "已拷贝 $SRC_FILE -> $DEST_DIR/"
    else
      echo "未找到 $SRC_FILE,跳过"
    fi
  done
done

# 5. Maven 打包(假设项目根目录下含有 pom.xml)
cd "$TEMP_DIR"
if [[ -f "./pom.xml" ]]; then
  echo "执行 Maven 打包"
  mvn clean package -DskipTests
else
  echo "没有找到 pom.xml,跳过 Maven 打包"
  exit 1
fi

# 6. 更新部署目录(可根据实际更新方式做增量或全量)
echo "复制打包文件到部署目录"
# 拷贝前端文件
if [[ -d "$TEMP_DIR/public" ]]; then
  echo "更新前端文件"
  rm -rf "$DEPLOY_DIR/public"
  cp -r "$TEMP_DIR/public" "$DEPLOY_DIR/"
  echo "前端文件更新完成"
else
  echo "未找到前端文件目录"
fi
# 拷贝后端jar包
for module in "${MODULE_DIRS[@]}"; do
  JAR_FILE="$TEMP_DIR/$module/target/$module-0.0.1-SNAPSHOT.jar"
  if [[ -f "$JAR_FILE" ]]; then
    echo "更新 $module JAR包"
    mkdir -p "$DEPLOY_DIR/$module"
    cp "$JAR_FILE" "$DEPLOY_DIR/$module/"
    echo "$module JAR包更新完成"
  else
    echo "未找到 $module JAR包: $JAR_FILE"
  fi
done

# 7. 重启 Docker(假设容器名称为项目名)
CONTAINERS=("tigshop-adminapi" "tigshop-api")

for container in "${CONTAINERS[@]}"; do
  if docker ps -a --format '{{.Names}}' | grep -q "^${container}$"; then
    echo "重启容器: $container"
    docker restart "$container"
    echo "容器 $container 已重启"
  else
    echo "未找到容器:$container"
  fi
done

echo "更新完成!"

项目更新(linux docker 更新)
大纲
手动更新
下载代码
SQL 更新
前端更新
后端更新
重启后端项目
脚本更新(使用命令脚本更新)
SQL 更新
上传更新的压缩包到服务器
执行脚本
脚本如下