test
This commit is contained in:
225
deploy-all.sh
Executable file
225
deploy-all.sh
Executable file
@@ -0,0 +1,225 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 数字档案系统一键部署脚本
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 默认配置
|
||||
DEFAULT_DEPLOY_DIR="/root/server/archive"
|
||||
PROJECT_NAME="digital-archive"
|
||||
VERSION="latest"
|
||||
|
||||
# 处理参数
|
||||
DEPLOY_DIR=$DEFAULT_DEPLOY_DIR
|
||||
SKIP_CHECKS=false
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
echo -e "${GREEN}数字档案系统一键部署脚本${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}用法: $0 [选项] [部署目录]${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}选项:${NC}"
|
||||
echo " -h, --help 显示帮助信息"
|
||||
echo " -s, --skip 跳过环境检查"
|
||||
echo " -c, --check 只执行环境检查"
|
||||
echo " -b, --build 只构建镜像"
|
||||
echo ""
|
||||
echo -e "${BLUE}参数:${NC}"
|
||||
echo " 部署目录 目标部署目录 (默认: ${DEFAULT_DEPLOY_DIR})"
|
||||
echo ""
|
||||
echo -e "${YELLOW}示例:${NC}"
|
||||
echo " $0 # 使用默认目录部署"
|
||||
echo " $0 /opt/digital-archive # 部署到指定目录"
|
||||
echo " $0 -s /opt/archive # 跳过检查部署到指定目录"
|
||||
echo " $0 -c # 只执行环境检查"
|
||||
echo " $0 -b # 只构建镜像"
|
||||
}
|
||||
|
||||
# 解析命令行参数
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
-s|--skip)
|
||||
SKIP_CHECKS=true
|
||||
shift
|
||||
;;
|
||||
-c|--check)
|
||||
CHECK_ONLY=true
|
||||
shift
|
||||
;;
|
||||
-b|--build)
|
||||
BUILD_ONLY=true
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
echo -e "${RED}未知选项: $1${NC}"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
DEPLOY_DIR=$1
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 显示配置信息
|
||||
echo -e "${GREEN}=== 数字档案系统一键部署 ===${NC}"
|
||||
echo -e "${YELLOW}部署目录: ${DEPLOY_DIR}${NC}"
|
||||
echo -e "${YELLOW}跳过检查: ${SKIP_CHECKS}${NC}"
|
||||
if [ "$CHECK_ONLY" = true ]; then
|
||||
echo -e "${YELLOW}模式: 仅检查环境${NC}"
|
||||
elif [ "$BUILD_ONLY" = true ]; then
|
||||
echo -e "${YELLOW}模式: 仅构建镜像${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}模式: 完整部署${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 检查脚本文件是否存在
|
||||
check_scripts() {
|
||||
local scripts=("build.sh" "check-network.sh" "pre-deploy-check.sh" "deploy.sh")
|
||||
for script in "${scripts[@]}"; do
|
||||
if [ ! -f "$script" ]; then
|
||||
echo -e "${RED}错误: 脚本文件 $script 不存在${NC}"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -x "$script" ]; then
|
||||
echo -e "${YELLOW}设置脚本执行权限: $script${NC}"
|
||||
chmod +x "$script"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 执行环境检查
|
||||
run_checks() {
|
||||
echo -e "${BLUE}=== 执行环境检查 ===${NC}"
|
||||
|
||||
# 检查网络
|
||||
echo -e "${YELLOW}1. 检查Docker网络...${NC}"
|
||||
if [ -f "./check-network.sh" ]; then
|
||||
./check-network.sh
|
||||
else
|
||||
echo -e "${RED}check-network.sh 脚本不存在${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 部署前检查
|
||||
echo -e "${YELLOW}2. 执行部署前检查...${NC}"
|
||||
if [ -f "./pre-deploy-check.sh" ]; then
|
||||
./pre-deploy-check.sh "$DEPLOY_DIR"
|
||||
else
|
||||
echo -e "${RED}pre-deploy-check.sh 脚本不存在${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}环境检查完成!${NC}"
|
||||
}
|
||||
|
||||
# 构建镜像
|
||||
build_image() {
|
||||
echo -e "${BLUE}=== 构建应用镜像 ===${NC}"
|
||||
|
||||
if [ -f "./build.sh" ]; then
|
||||
./build.sh
|
||||
else
|
||||
echo -e "${RED}build.sh 脚本不存在${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}镜像构建完成!${NC}"
|
||||
}
|
||||
|
||||
# 部署应用
|
||||
deploy_app() {
|
||||
echo -e "${BLUE}=== 部署应用 ===${NC}"
|
||||
|
||||
if [ -f "./deploy.sh" ]; then
|
||||
./deploy.sh "$DEPLOY_DIR"
|
||||
else
|
||||
echo -e "${RED}deploy.sh 脚本不存在${NC}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}应用部署完成!${NC}"
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start_services() {
|
||||
echo -e "${BLUE}=== 启动服务 ===${NC}"
|
||||
|
||||
cd "$DEPLOY_DIR"
|
||||
|
||||
echo -e "${YELLOW}启动数字档案系统...${NC}"
|
||||
./start.sh
|
||||
|
||||
echo -e "${GREEN}服务启动完成!${NC}"
|
||||
echo -e "${YELLOW}访问地址: http://localhost:9081/point-strategy${NC}"
|
||||
}
|
||||
|
||||
# 显示部署后信息
|
||||
show_post_info() {
|
||||
echo -e "${GREEN}=== 部署完成 ===${NC}"
|
||||
echo -e "${YELLOW}部署目录: ${DEPLOY_DIR}${NC}"
|
||||
echo -e "${YELLOW}服务管理:${NC}"
|
||||
echo " 启动服务: cd ${DEPLOY_DIR} && ./start.sh"
|
||||
echo " 停止服务: cd ${DEPLOY_DIR} && ./stop.sh"
|
||||
echo " 更新服务: cd ${DEPLOY_DIR} && ./update.sh"
|
||||
echo " 查看状态: cd ${DEPLOY_DIR} && docker-compose ps"
|
||||
echo " 查看日志: cd ${DEPLOY_DIR} && docker-compose logs -f app"
|
||||
echo ""
|
||||
echo -e "${YELLOW}访问地址: http://localhost:9081/point-strategy${NC}"
|
||||
}
|
||||
|
||||
# 主执行流程
|
||||
main() {
|
||||
# 检查脚本文件
|
||||
check_scripts
|
||||
|
||||
# 根据模式执行不同操作
|
||||
if [ "$CHECK_ONLY" = true ]; then
|
||||
run_checks
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$BUILD_ONLY" = true ]; then
|
||||
build_image
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 完整部署流程
|
||||
if [ "$SKIP_CHECKS" = false ]; then
|
||||
echo -e "${YELLOW}提示: 使用 -s 参数可跳过环境检查${NC}"
|
||||
run_checks
|
||||
else
|
||||
echo -e "${YELLOW}跳过环境检查${NC}"
|
||||
fi
|
||||
|
||||
build_image
|
||||
deploy_app
|
||||
|
||||
# 询问是否立即启动
|
||||
echo ""
|
||||
read -p "是否立即启动服务? (Y/n): " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Nn]$ ]]; then
|
||||
echo -e "${YELLOW}服务未启动,手动启动命令: cd ${DEPLOY_DIR} && ./start.sh${NC}"
|
||||
else
|
||||
start_services
|
||||
fi
|
||||
|
||||
show_post_info
|
||||
}
|
||||
|
||||
# 执行主函数
|
||||
main
|
||||
Reference in New Issue
Block a user