feat(deploy): 优化部署脚本,支持问答式配置

- start.sh: 交互式选择 IP/域名访问,自动生成 .env、.env.tools、.env.ASG
- start.sh: 移除内置克隆逻辑,需先 git clone 再执行
- 新增 docker/verify: Docker 验证环境与快速验证脚本

Made-with: Cursor
This commit is contained in:
wangbo 2026-03-09 16:40:38 +08:00
parent 59a1a88e29
commit bb2373d4f6
4 changed files with 108 additions and 17 deletions

33
docker/verify/Dockerfile Normal file
View File

@ -0,0 +1,33 @@
# EasyAI 部署脚本验证环境
# 在 Docker 容器内运行 start.sh通过挂载 Docker Socket 使用宿主机 Docker 启动服务
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
gnupg \
lsb-release \
git \
sudo \
&& rm -rf /var/lib/apt/lists/*
# 安装 Docker CLI使用宿主机 Docker 守护进程)
RUN install -m 0755 -d /etc/apt/keyrings \
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
&& chmod a+r /etc/apt/keyrings/docker.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin \
&& rm -rf /var/lib/apt/lists/*
# 创建工作目录
WORKDIR /workspace/easyai
# 复制项目文件(运行时通过 volume 挂载覆盖)
COPY . /workspace/easyai/
# 允许以 root 运行(容器内通常为 root
ENV DEPLOY_ACCESS=ip
ENV DEPLOY_IP=127.0.0.1

View File

@ -0,0 +1,24 @@
#!/bin/bash
# 快速验证:仅测试配置生成,不拉取镜像、不启动服务
# 适合 CI 或快速检查脚本逻辑
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
echo "================================"
echo " EasyAI 部署脚本快速验证"
echo " (仅配置,不启动 Docker)"
echo "================================"
# 使用管道模拟用户输入1=IP模式, 127.0.0.1=IP地址
printf '1\n127.0.0.1\n' | DEPLOY_DRY_RUN=1 DEPLOY_FORCE_RECONFIG=1 ./start.sh
echo ""
echo "✅ 配置验证通过,检查生成的文件:"
ls -la .env .env.tools .env.ASG 2>/dev/null || true
echo ""
grep -E "NUXT_PUBLIC_(BASE_APIURL|BASE_SOCKETURL|SG_APIURL)" .env 2>/dev/null | head -3

46
docker/verify/run-verify.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
# 在 Docker 容器中验证 EasyAI 部署脚本
# 用法: 在 easyai 项目根目录执行 ./docker/verify/run-verify.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
echo "================================"
echo " EasyAI 部署脚本 Docker 验证"
echo "================================"
echo "项目目录: $PROJECT_ROOT"
echo ""
# 构建验证镜像
echo "📦 构建验证镜像..."
docker build -f docker/verify/Dockerfile -t easyai-deploy-verify:latest .
echo ""
echo "🚀 运行部署脚本(非交互模式,挂载 Docker Socket..."
echo " 使用 DEPLOY_ACCESS=ip DEPLOY_IP=127.0.0.1"
echo ""
# 挂载 Docker Socket使容器内 docker 命令使用宿主机 Docker
# 挂载项目目录,使用本地文件(避免容器内复制过时)
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PROJECT_ROOT:/workspace/easyai" \
-w /workspace/easyai \
-e DEPLOY_ACCESS=ip \
-e DEPLOY_IP=127.0.0.1 \
-e DEPLOY_FORCE_RECONFIG=1 \
easyai-deploy-verify:latest \
bash -c './start.sh'
EXIT_CODE=$?
echo ""
if [ $EXIT_CODE -eq 0 ]; then
echo "✅ 部署脚本验证通过"
else
echo "❌ 部署脚本验证失败 (exit code: $EXIT_CODE)"
fi
exit $EXIT_CODE

View File

@ -1,7 +1,7 @@
#!/bin/bash
# EasyAI 一键部署脚本
# 支持交互式问答配置,兼容 IP 与域名两种访问方式
# 一行命令部署: bash -c "$(curl -fsSL https://git.51easyai.com/wangbo/easyai/raw/branch/main/start.sh)"
# 一行命令: git clone https://git.51easyai.com/wangbo/easyai && cd easyai && chmod +x ./start.sh && ./start.sh
set -e
@ -9,29 +9,17 @@ set -e
DEPLOY_DRY_RUN="${DEPLOY_DRY_RUN:-0}"
# ==================== 项目初始化 ====================
# 若通过 curl | bash 运行,需先克隆项目
init_project_dir() {
local script_source
script_source="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
if [ -f "${script_source}/docker-compose.yml" ]; then
echo "📁 检测到项目目录: ${script_source}"
echo "📁 项目目录: ${script_source}"
cd "$script_source"
return 0
fi
# 通过 curl 运行时,克隆项目
echo "📥 未检测到项目目录,正在克隆 EasyAI 仓库..."
EASYAI_DIR="${EASYAI_DIR:-$HOME/easyai}"
if [ -d "$EASYAI_DIR" ]; then
echo "📁 使用已有目录: $EASYAI_DIR"
cd "$EASYAI_DIR"
else
git clone --depth 1 https://git.51easyai.com/wangbo/easyai.git "$EASYAI_DIR" || {
echo "❌ 克隆失败,请检查网络或手动克隆: git clone https://git.51easyai.com/wangbo/easyai.git"
exit 1
}
cd "$EASYAI_DIR"
fi
echo "❌ 未找到 docker-compose.yml请在 easyai 项目目录下运行 start.sh"
echo " 启动命令: git clone https://git.51easyai.com/wangbo/easyai && cd easyai && chmod +x ./start.sh && ./start.sh"
exit 1
}
# ==================== 配置变量(支持环境变量非交互模式) ====================