合并test分支代码
This commit is contained in:
@@ -1,14 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ============================================================
|
||||
<<<<<<< HEAD
|
||||
# frpc-console 一键部署脚本(Docker 优先)
|
||||
# 支持:Linux x86_64 / ARM64 / ARMv7
|
||||
# 自动安装:git / curl / wget / Docker
|
||||
#
|
||||
=======
|
||||
# frpc-console 一键部署脚本 (Docker 优先)
|
||||
>>>>>>> test
|
||||
# 用法:
|
||||
# run-deploy.sh 引导后自动执行
|
||||
# ============================================================
|
||||
@@ -29,27 +22,12 @@ WORK_DIR="/tmp/frpc-console-build"
|
||||
DEFAULT_PORT=9300
|
||||
DEFAULT_DEPLOY_DIR="/opt/frpc-console"
|
||||
IMAGE_NAME="frpc-console"
|
||||
<<<<<<< HEAD
|
||||
|
||||
# ---------- 状态变量 ----------
|
||||
OS=""
|
||||
OS_VERSION=""
|
||||
ARCH=""
|
||||
HAS_GIT=false
|
||||
HAS_CURL=false
|
||||
HAS_WGET=false
|
||||
HAS_DOCKER=false
|
||||
NEED_INSTALL_GIT=false
|
||||
NEED_INSTALL_CURL=false
|
||||
NEED_INSTALL_WGET=false
|
||||
=======
|
||||
KEEP_IMAGES=3
|
||||
|
||||
# ---------- 状态变量 ----------
|
||||
OS=""; OS_VERSION=""; ARCH=""
|
||||
HAS_GIT=false; HAS_CURL=false; HAS_WGET=false; HAS_DOCKER=false
|
||||
NEED_INSTALL_GIT=false; NEED_INSTALL_CURL=false; NEED_INSTALL_WGET=false
|
||||
>>>>>>> test
|
||||
PORT=${DEFAULT_PORT}
|
||||
DEPLOY_DIR=${DEFAULT_DEPLOY_DIR}
|
||||
DATA_DIR="${DEPLOY_DIR}/data"
|
||||
@@ -274,12 +252,8 @@ generate_plan() {
|
||||
PLAN="${PLAN} • 安装必要工具:${pkgs}\n"
|
||||
fi
|
||||
PLAN="${PLAN} • 拉取 frpc-console 源码 (${BRANCH} 分支)\n"
|
||||
<<<<<<< HEAD
|
||||
PLAN="${PLAN} • 构建 Docker 镜像(源码内编译)\n"
|
||||
=======
|
||||
PLAN="${PLAN} • 构建 Docker 镜像: ${IMAGE_NAME}:${IMAGE_TAG}\n"
|
||||
PLAN="${PLAN} • 目标版本: ${TARGET_VERSION}\n"
|
||||
>>>>>>> test
|
||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||
PLAN="${PLAN} • 停止并删除旧容器\n"
|
||||
fi
|
||||
@@ -348,22 +322,6 @@ do_deploy() {
|
||||
print_subtitle "开始部署"
|
||||
echo ""
|
||||
|
||||
<<<<<<< HEAD
|
||||
# ----- 事务前钩子:备份数据库 -----
|
||||
print_step "备份数据库..."
|
||||
BACKUP_DIR="/tmp/frpc-console/db-backups"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
DB_FILE="${DEPLOY_DIR}/frpc-console.db"
|
||||
if [ -f "$DB_FILE" ]; then
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_FILE="$BACKUP_DIR/frpc-console.db.$TIMESTAMP"
|
||||
cp "$DB_FILE" "$BACKUP_FILE"
|
||||
print_info "已备份: $BACKUP_FILE"
|
||||
if command -v sqlite3 &> /dev/null; then
|
||||
if ! sqlite3 "$DB_FILE" "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='users';" 2>/dev/null | grep -q "^1$"; then
|
||||
print_warn "数据库文件无效,将删除,由容器全新初始化"
|
||||
rm -f "$DB_FILE"
|
||||
=======
|
||||
# ----- 事务前钩子:备份数据库(仅降级时) -----
|
||||
BACKUP_DIR=""
|
||||
if [ -n "$CURRENT_VERSION" ] && [ -n "$TARGET_VERSION" ]; then
|
||||
@@ -387,7 +345,6 @@ do_deploy() {
|
||||
if [ -d "$DEPLOY_DIR" ]; then
|
||||
cp -r "$DEPLOY_DIR" "$BACKUP_DIR/frpc-console"
|
||||
print_success "备份完成: $BACKUP_DIR"
|
||||
>>>>>>> test
|
||||
else
|
||||
print_warn "部署目录不存在,跳过备份"
|
||||
fi
|
||||
@@ -396,8 +353,6 @@ do_deploy() {
|
||||
print_info "首次部署,跳过版本比对"
|
||||
fi
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
# ----- 安装必要工具 -----
|
||||
if [ "$NEED_INSTALL_GIT" = true ] || [ "$NEED_INSTALL_CURL" = true ] || [ "$NEED_INSTALL_WGET" = true ]; then
|
||||
print_step "安装必要工具..."
|
||||
@@ -422,22 +377,15 @@ do_deploy() {
|
||||
print_success "必要工具安装完成"
|
||||
fi
|
||||
|
||||
>>>>>>> test
|
||||
# ----- 拉取代码 -----
|
||||
print_step "拉取代码..."
|
||||
rm -rf "$WORK_DIR"
|
||||
git clone --depth 1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR"
|
||||
cd "$WORK_DIR"
|
||||
mkdir -p bin static
|
||||
<<<<<<< HEAD
|
||||
print_success "代码拉取完成"
|
||||
|
||||
# ----- 停止旧容器(拉取代码之后)-----
|
||||
=======
|
||||
print_success "代码拉取完成 (分支: ${BRANCH})"
|
||||
|
||||
# ----- 停止旧容器 -----
|
||||
>>>>>>> test
|
||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||
print_step "停止旧容器..."
|
||||
if [ "$CONTAINER_RUNNING" = true ]; then
|
||||
@@ -448,21 +396,6 @@ do_deploy() {
|
||||
fi
|
||||
|
||||
# ----- 准备部署目录 -----
|
||||
<<<<<<< HEAD
|
||||
print_step "准备部署目录..."
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
mkdir -p "$DATA_DIR"
|
||||
if [ -f "$DB_FILE" ]; then
|
||||
print_info "数据库文件存在,将保留"
|
||||
else
|
||||
print_info "数据库文件不存在,容器启动时将自动创建"
|
||||
fi
|
||||
|
||||
# ----- 构建 Docker 镜像(内部自动处理 go.mod 降级)-----
|
||||
print_step "构建 Docker 镜像..."
|
||||
docker build -t "${IMAGE_NAME}:latest" .
|
||||
print_success "Docker 镜像构建完成: ${IMAGE_NAME}:latest"
|
||||
=======
|
||||
print_step "准备部署目录..."
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
mkdir -p "$DATA_DIR"
|
||||
@@ -535,7 +468,6 @@ docker build --no-cache \
|
||||
docker tag "${IMAGE_NAME}:${IMAGE_TAG}" "${IMAGE_NAME}:preview"
|
||||
print_info "已标记 ${IMAGE_NAME}:preview"
|
||||
fi
|
||||
>>>>>>> test
|
||||
|
||||
# ----- 启动新容器 -----
|
||||
print_step "启动 frpc-console 容器..."
|
||||
@@ -544,11 +476,7 @@ docker build --no-cache \
|
||||
--name frpc-console \
|
||||
--restart=always \
|
||||
--network host \
|
||||
<<<<<<< HEAD
|
||||
-v ${DEPLOY_DIR}:/app \
|
||||
=======
|
||||
-v ${DEPLOY_DIR}/data:/app/data \
|
||||
>>>>>>> test
|
||||
-e PORT=${PORT} \
|
||||
-e TZ=Asia/Shanghai \
|
||||
${IMAGE_NAME}:${IMAGE_TAG}
|
||||
@@ -560,14 +488,6 @@ docker build --no-cache \
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<<<<<< HEAD
|
||||
# ----- 检查 frpc 子进程 -----
|
||||
print_step "检查 frpc 状态..."
|
||||
sleep 3
|
||||
if docker ps --format '{{.Names}}' | grep -q "^frpc-console$"; then
|
||||
if docker exec frpc-console ps aux 2>/dev/null | grep -q "[f]rpc -c"; then
|
||||
print_success "frpc 进程运行正常"
|
||||
=======
|
||||
# ----- 写入版本文件 -----
|
||||
print_step "写入版本文件..."
|
||||
echo "$TARGET_VERSION" > "${DEPLOY_DIR}/data/version.ini"
|
||||
@@ -582,7 +502,6 @@ docker build --no-cache \
|
||||
PID=$(cat "$PID_FILE" 2>/dev/null | tr -d ' \n')
|
||||
if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
|
||||
print_success "frpc 进程运行正常 (PID: $PID)"
|
||||
>>>>>>> test
|
||||
else
|
||||
print_warn "frpc 进程未运行(PID 文件存在但进程已退出,可能配置为空)"
|
||||
fi
|
||||
@@ -590,11 +509,7 @@ docker build --no-cache \
|
||||
print_warn "frpc 进程未运行(PID 文件不存在,请导入 TOML 后重试)"
|
||||
fi
|
||||
|
||||
<<<<<<< HEAD
|
||||
# ----- 事务后钩子:检测数据库 -----
|
||||
=======
|
||||
# ----- 验证数据库 -----
|
||||
>>>>>>> test
|
||||
print_step "验证数据库状态..."
|
||||
if docker exec frpc-console sqlite3 /app/frpc-console.db "SELECT COUNT(*) FROM users;" 2>/dev/null | grep -q "^[0-9]"; then
|
||||
print_success "数据库可用"
|
||||
@@ -654,10 +569,6 @@ docker build --no-cache \
|
||||
echo ""
|
||||
echo -e " ${CYAN}📍 访问地址:${NC} http://$(hostname -I | awk '{print $1}'):${PORT}"
|
||||
echo -e " ${CYAN}📂 数据目录:${NC} ${DEPLOY_DIR}"
|
||||
<<<<<<< HEAD
|
||||
echo -e " ${CYAN}📦 备份目录:${NC} /tmp/frpc-console/db-backups"
|
||||
=======
|
||||
>>>>>>> test
|
||||
echo -e " ${CYAN}🐳 容器名称:${NC} frpc-console"
|
||||
echo -e " ${CYAN}🏷️ 版本:${NC} ${TARGET_VERSION}"
|
||||
echo -e " ${CYAN}🌿 分支:${NC} ${BRANCH}"
|
||||
|
||||
Reference in New Issue
Block a user