Add static deployment build and guide

This commit is contained in:
Jacky Ser
2026-08-11 17:37:11 +08:00
parent 775ccf82ab
commit 42c21dd024
11 changed files with 168 additions and 2 deletions

75
DEPLOY_STATIC.md Normal file
View File

@@ -0,0 +1,75 @@
# 高徳乐 AI 舵机选型助手:静态部署说明
本仓库已经提供纯静态构建方式。页面的产品数据、图片、选型计算、筛选和弹窗交互都在浏览器中运行,不依赖 Node.js、数据库、API 或 Cloudflare Worker 的运行时。
## 给 Git AI 的部署任务
可以直接把下面这段话发给仓库里的 AI
> 请将本仓库部署为纯静态网站,不要启动 Node.js 后端、Vinext Server 或 Cloudflare Worker。先执行 `npm ci`,再执行 `npm run build:static`。把生成的 `dist-static/` 目录作为网站根目录发布到当前云服务器,并配置 Nginx 将未知路径回退到 `index.html`。如果服务器使用 Docker请使用仓库中的 `Dockerfile.static` 构建并运行,容器端口为 80。部署完成后检查首页、`#selector`、`#products` 和 `#precision-gears` 页面区域,以及产品图片是否能正常加载。
## 方式一Nginx / 静态文件服务器
在服务器项目目录执行:
```bash
git clone https://git.databerrypi.com/MJ-IT/gdm-Servo-model.git
cd gdm-Servo-model
npm ci
npm run build:static
```
`dist-static/` 下的全部文件复制到 Nginx 网站根目录,例如:
```bash
sudo mkdir -p /var/www/gdm-servo
sudo rsync -a --delete dist-static/ /var/www/gdm-servo/
```
Nginx 的站点配置可以参考 [`deploy/nginx-static.conf`](deploy/nginx-static.conf)。其中最关键的是:
```nginx
root /var/www/gdm-servo;
location / {
try_files $uri $uri/ /index.html;
}
```
以后更新时,在仓库目录执行:
```bash
git pull --ff-only origin main
npm ci
npm run build:static
sudo rsync -a --delete dist-static/ /var/www/gdm-servo/
```
运行时只需要 Nginx不需要保留 Node.js 进程。
## 方式二Docker
仓库已经提供 [`Dockerfile.static`](Dockerfile.static)
```bash
docker build -f Dockerfile.static -t gdm-servo-static:latest .
docker run -d --name gdm-servo-static --restart unless-stopped -p 80:80 gdm-servo-static:latest
```
如果服务器已有 80 端口服务,可以改成 `-p 8080:80`,再由现有 Nginx 反向代理到 `127.0.0.1:8080`
## 本地检查
```bash
npm run build:static
python3 -m http.server 8080 --directory dist-static
```
然后打开 `http://服务器IP:8080`。不要直接双击 `index.html`,因为浏览器会限制本地文件加载模块和图片资源。
## 部署注意事项
- 静态版没有服务端接口;当前“申请样品”和“联系我们”表单只在浏览器中生成演示编号,不会把线索写入 CRM 或数据库。
- 如果后续要真正保存客户线索,需要另行接入表单 API、企业微信、CRM 或数据库,不应把密钥写进前端代码。
- 页面使用根路径资源(例如 `/catalog-products/...`),因此建议部署在域名根路径。如果必须部署到 `/servo/` 子目录,需要同步调整 Vite 的 `base` 和图片资源路径。
- 每次产品数据或图片变更后,都要重新执行 `npm run build:static`,再同步整个 `dist-static/` 目录。