mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 04:46:26 +00:00
67 lines
2.7 KiB
Bash
67 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
# 设置全局变量
|
|
PROJECT_NAME="fastapi_vue3_admin"
|
|
WORK_DIR="/home"
|
|
GIT_REPO="https://gitee.com/tao__tao/fastapi_vue3_admin.git"
|
|
|
|
# 第一步:设置工作目录
|
|
echo "🔍 第一步:设置工作目录"
|
|
echo "⏳ 正在切换到工作目录 ${WORK_DIR} ..."
|
|
cd "${WORK_DIR}" || { echo "❌ 无法切换到 ${WORK_DIR} 目录"; exit 1; }
|
|
|
|
# 第二步:清理旧项目文件夹(如果存在)
|
|
echo -e "\n🔍 第二步:清理旧项目文件夹(如存在)"
|
|
echo "⏳ 正在检查是否存在旧项目 ${PROJECT_NAME}/ ..."
|
|
if [ -d "${PROJECT_NAME}/" ]; then
|
|
echo "🗑️ 正在删除旧项目文件夹 ${PROJECT_NAME}/ ..."
|
|
rm -rf "${PROJECT_NAME}/" || { echo "❌ 删除旧项目文件夹失败"; exit 1; }
|
|
echo "✅ 旧项目文件夹已成功删除。"
|
|
else
|
|
echo "✨ 未找到旧项目文件夹,跳过删除步骤。"
|
|
fi
|
|
|
|
# 第三步:克隆项目仓库
|
|
echo -e "\n🔍 第三步:克隆项目代码库"
|
|
echo "📥 正在克隆项目代码库 ..."
|
|
git clone "${GIT_REPO}" || { echo "❌ 项目克隆失败"; exit 1; }
|
|
echo "✅ 项目克隆成功。"
|
|
|
|
# 第四步:进入项目根目录
|
|
echo -e "\n🔍 第四步:进入项目根目录"
|
|
echo "📁 正在进入项目目录 ${PROJECT_NAME} ..."
|
|
cd "${PROJECT_NAME}" || { echo "❌ 无法进入项目目录"; exit 1; }
|
|
|
|
# 第五步:停止并删除正在运行的容器
|
|
echo -e "\n🔍 第五步:停止并删除现有容器"
|
|
echo "🛑 正在停止并删除现有容器 ..."
|
|
docker compose kill || { echo "⚠️ 停止容器失败,可能没有运行的容器"; }
|
|
docker compose rm -f || { echo "⚠️ 删除容器失败,可能没有容器可删除"; }
|
|
echo "✅ 容器已停止并删除。"
|
|
|
|
# 第六步:打包前端项目
|
|
echo -e "\n🔍 第六步: 打包前端工程"
|
|
echo "📦 正在检查前端是否需要重新构建..."
|
|
|
|
# 检查是否需要重新构建
|
|
if [ ! -d "frontend/dist" ] || [ "$(git diff --name-only HEAD~1 HEAD)" ]; then
|
|
echo "🔧 检测到代码变更,正在安装前端依赖并构建..."
|
|
cd frontend || { echo "❌ 无法进入前端目录"; exit 1; }
|
|
npm install || { echo "❌ 前端依赖安装失败"; exit 1; }
|
|
npm run build || { echo "❌ 前端工程打包失败"; exit 1; }
|
|
echo "✅ 前端工程打包成功。"
|
|
cd .. || { echo "❌ 无法返回项目根目录"; exit 1; }
|
|
|
|
echo "🏗️ 正在构建镜像..."
|
|
docker compose build || { echo "❌ 镜像构建失败"; exit 1; }
|
|
else
|
|
echo "✨ 代码未变更,跳过构建步骤。"
|
|
fi
|
|
|
|
docker compose up -d || { echo "❌ 容器启动失败"; exit 1; }
|
|
echo "🚀 服务已成功启动。"
|
|
|
|
# 部署完成提示
|
|
echo -e "\n🎉 部署流程已完成!"
|
|
echo "前端访问地址: http://8.137.99.5:80"
|
|
echo "后端API文档: http://8.137.99.5:8001/api/v1/docs" |