#!/bin/bash # ============================================================ # 灵枢 - 保密服务器一键部署脚本(完全离线,无需联网) # ============================================================ set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" echo "========================================" echo " 灵枢智能任务平台 - 服务器离线部署" echo "========================================" # 检查 Docker 是否安装 if ! command -v docker &> /dev/null; then echo "[错误] 未检测到 Docker,请先在服务器上安装 Docker Engine" echo " 离线安装包请向系统管理员申请 docker-ce 离线 rpm/deb 包" exit 1 fi # 检查 docker compose if ! docker compose version &> /dev/null 2>&1; then echo "[错误] 未检测到 docker compose (v2),请安装 Docker Compose V2 插件" exit 1 fi # 1. 导入镜像(无需联网) echo "" echo "[1/3] 导入 Docker 镜像..." echo " 正在导入 mysql:8.0 ..." docker load -i "$SCRIPT_DIR/mysql_8.0.tar.gz" echo " 正在导入 lingshu_app ..." docker load -i "$SCRIPT_DIR/lingshu_app.tar.gz" # 2. 解压代码 echo "" echo "[2/3] 解压项目代码..." mkdir -p /opt/lingshu tar -xzf "$SCRIPT_DIR/lingshu_code.tar.gz" -C /opt/lingshu cd /opt/lingshu # 3. 检查并处理 3306 端口冲突 echo "" echo "[3/3] 检查端口占用并启动服务..." if ss -tlnp 2>/dev/null | grep -q ':3306 ' || netstat -tlnp 2>/dev/null | grep -q ':3306 '; then echo " [警告] 3306 端口已被占用,自动切换为 3307 端口映射" sed -i 's/"3306:3306"/"3307:3306"/' /opt/lingshu/docker-compose.yml fi # 启动(不拉取镜像) docker compose up -d echo "" echo "========================================" echo " 部署完成!" echo " 访问地址: http://$(hostname -I | awk '{print $1}'):5000" echo " 默认账号: admin / admin123" echo "========================================"