脚本更新、配置更新
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# AI Knowledge Link — 首次部署脚本
|
# AI Knowledge Link — 首次部署脚本
|
||||||
# 使用服务器本机 MySQL + 宝塔 Nginx
|
# Docker 跑 backend + frontend,服务器本机 MySQL,宝塔 Nginx 反代
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
@@ -25,12 +25,14 @@ EOF
|
|||||||
echo ".env 已创建"
|
echo ".env 已创建"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. 创建数据目录
|
# 2. 数据目录
|
||||||
mkdir -p data
|
mkdir -p data
|
||||||
|
|
||||||
# 3. 创建数据库(如果不存在)
|
# 3. 确保数据库存在(本机 MySQL 33306)
|
||||||
echo "检查数据库..."
|
echo "检查数据库..."
|
||||||
mysql -h 127.0.0.1 -P 33306 -u admin -pLzcc6-01 -e "CREATE DATABASE IF NOT EXISTS amb_rag CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null || echo "提示:请确保 MySQL 已启动且密码正确"
|
mysql -h 127.0.0.1 -P 33306 -u admin -pLzcc6-01 \
|
||||||
|
-e "CREATE DATABASE IF NOT EXISTS amb_rag CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" \
|
||||||
|
2>/dev/null || echo "提示:无法连接本机 MySQL,请确认已启动(不影响后续,backend 启动时会再试)"
|
||||||
|
|
||||||
# 4. 构建并启动
|
# 4. 构建并启动
|
||||||
echo "构建镜像..."
|
echo "构建镜像..."
|
||||||
@@ -44,7 +46,7 @@ echo "执行数据库迁移..."
|
|||||||
sleep 3
|
sleep 3
|
||||||
docker compose exec -T backend alembic upgrade head
|
docker compose exec -T backend alembic upgrade head
|
||||||
|
|
||||||
# 6. 创建管理员
|
# 6. 管理员账号
|
||||||
echo "检查管理员账号..."
|
echo "检查管理员账号..."
|
||||||
docker compose exec -T backend python -c "
|
docker compose exec -T backend python -c "
|
||||||
from app.core.db import get_session_factory
|
from app.core.db import get_session_factory
|
||||||
@@ -76,13 +78,13 @@ with factory() as session:
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo " 部署完成!"
|
echo " 容器部署完成!"
|
||||||
echo ""
|
echo ""
|
||||||
echo " 后端: http://$(curl -s ifconfig.me 2>/dev/null):8000/api/healthz"
|
echo " 后端: http://127.0.0.1:8000/api/healthz"
|
||||||
echo " 前端: http://$(curl -s ifconfig.me 2>/dev/null):5173"
|
echo " 前端: http://127.0.0.1:5173"
|
||||||
echo ""
|
echo ""
|
||||||
echo " 宝塔 Nginx 反代配置:"
|
echo " 下一步:宝塔 Nginx 反代(站点设置 → 反向代理):"
|
||||||
echo " /api/ → http://127.0.0.1:8000"
|
echo " /api/ → http://127.0.0.1:8000"
|
||||||
echo " /k/ → http://127.0.0.1:8000"
|
echo " /k/ → http://127.0.0.1:8000"
|
||||||
echo " / → http://127.0.0.1:5173"
|
echo " / → http://127.0.0.1:5173"
|
||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
+4
-5
@@ -1,9 +1,8 @@
|
|||||||
# AI Knowledge Link — Docker Compose (生产)
|
# AI Knowledge Link — Docker Compose
|
||||||
#
|
# 只跑 backend + frontend 两个容器,Nginx 用服务器宝塔的(反代到这两个容器)
|
||||||
# 使用服务器本机 MySQL(端口 33306),宝塔 Nginx 反代
|
|
||||||
#
|
#
|
||||||
# 部署:bash deploy.sh
|
# 部署:bash deploy.sh
|
||||||
# 更新:git pull && bash update.sh
|
# 更新:bash update.sh
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# ---------- 后端 ----------
|
# ---------- 后端 ----------
|
||||||
@@ -33,7 +32,7 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
# ---------- 前端 ----------
|
# ---------- 前端(内部 nginx 已配置 SPA 路由回退)----------
|
||||||
frontend:
|
frontend:
|
||||||
build:
|
build:
|
||||||
context: ./frontend
|
context: ./frontend
|
||||||
|
|||||||
+2
-2
@@ -8,11 +8,11 @@ RUN npm config set registry https://registry.npmmirror.com && npm ci
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Stage 2: serve with nginx
|
# Stage 2: serve with nginx(含 SPA 路由回退配置)
|
||||||
FROM nginx:1.27-alpine AS serve
|
FROM nginx:1.27-alpine AS serve
|
||||||
|
|
||||||
COPY --from=build /app/dist /usr/share/nginx/html
|
COPY --from=build /app/dist /usr/share/nginx/html
|
||||||
# 自定义 nginx 配置由外层 docker-compose 挂载,这里只 serve 静态产物
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# 前端容器内部 nginx —— 负责 SPA 路由回退
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# 关键:所有找不到的路径回退到 index.html(Vue Router history 模式必需)
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 静态资源缓存
|
||||||
|
location /assets/ {
|
||||||
|
expires 30d;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,30 +1,63 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# AI Knowledge Link — 一键更新脚本
|
# AI Knowledge Link — 一键更新脚本
|
||||||
|
# 用法: bash update.sh
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "=== AI Knowledge Link 更新 ==="
|
echo "=== AI Knowledge Link 更新 ==="
|
||||||
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# 1. 拉取最新代码
|
# 1. 拉取最新代码
|
||||||
echo "[1/4] 拉取最新代码..."
|
echo "[1/4] 拉取最新代码..."
|
||||||
git pull
|
if ! git pull; then
|
||||||
|
echo ""
|
||||||
|
echo "错误:git pull 失败。通常是服务器上有本地修改与远程冲突。"
|
||||||
|
echo "如果确认要放弃服务器上的修改,执行:"
|
||||||
|
echo " git checkout -- . && git pull"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 2. 重新构建
|
# 2. 重新构建
|
||||||
|
echo ""
|
||||||
echo "[2/4] 重新构建镜像..."
|
echo "[2/4] 重新构建镜像..."
|
||||||
docker compose build
|
docker compose build
|
||||||
|
|
||||||
# 3. 重启服务
|
# 3. 重启服务
|
||||||
|
echo ""
|
||||||
echo "[3/4] 重启服务..."
|
echo "[3/4] 重启服务..."
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
# 4. 数据库迁移
|
# 4. 等待后端就绪后执行迁移(兜底,容器启动时也会自动迁移)
|
||||||
echo "[4/4] 执行数据库迁移..."
|
echo ""
|
||||||
sleep 3
|
echo "[4/4] 等待后端就绪并执行迁移..."
|
||||||
docker compose exec -T backend alembic upgrade head
|
for i in $(seq 1 30); do
|
||||||
|
if docker compose exec -T backend python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/healthz')" 2>/dev/null; then
|
||||||
|
echo "后端已就绪(第 ${i} 次探测)"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$i" -eq 30 ]; then
|
||||||
|
echo "警告:后端 30 秒内未就绪,跳过迁移步骤(容器启动时会自动迁移)"
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
docker compose exec -T backend alembic upgrade head 2>/dev/null || true
|
||||||
|
|
||||||
|
# 5. 结果
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 更新完成!$(date '+%H:%M:%S')"
|
||||||
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
echo "更新完成!$(date '+%H:%M:%S')"
|
|
||||||
docker compose ps
|
docker compose ps
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 健康检查
|
||||||
|
if curl -s -f http://127.0.0.1:8000/api/healthz > /dev/null 2>&1; then
|
||||||
|
echo "✅ 后端健康检查通过"
|
||||||
|
else
|
||||||
|
echo "❌ 后端健康检查失败,查看日志:docker compose logs backend --tail 50"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user