|
|
#!/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 "========================================"
|