258 lines
5.3 KiB
Markdown
258 lines
5.3 KiB
Markdown
|
|
# 前端部署指南
|
|||
|
|
|
|||
|
|
## 📦 部署方式
|
|||
|
|
|
|||
|
|
### 方式一:本地构建后上传(推荐)
|
|||
|
|
|
|||
|
|
#### 1. 本地构建
|
|||
|
|
|
|||
|
|
**Windows:**
|
|||
|
|
```bash
|
|||
|
|
cd frontend
|
|||
|
|
pnpm build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**或者使用脚本:**
|
|||
|
|
```bash
|
|||
|
|
cd frontend
|
|||
|
|
.\build-and-deploy.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Linux/Mac:**
|
|||
|
|
```bash
|
|||
|
|
cd frontend
|
|||
|
|
pnpm build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
构建完成后会在 `frontend/dist` 目录生成静态文件。
|
|||
|
|
|
|||
|
|
#### 2. 上传到服务器
|
|||
|
|
|
|||
|
|
将 `dist` 文件夹上传到服务器的指定目录,例如:
|
|||
|
|
```bash
|
|||
|
|
# 在服务器上创建目录
|
|||
|
|
sudo mkdir -p /data/project/dashboard/frontend/dist
|
|||
|
|
|
|||
|
|
# 上传文件(使用 scp、rsync 或 FTP 工具)
|
|||
|
|
# 示例:使用 scp
|
|||
|
|
scp -r dist/* user@server:/data/project/dashboard/frontend/dist/
|
|||
|
|
|
|||
|
|
# 或使用 rsync(推荐)
|
|||
|
|
rsync -avz --progress dist/ user@server:/data/project/dashboard/frontend/dist/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3. 修改 docker-compose.yml
|
|||
|
|
|
|||
|
|
确保使用简单的 Nginx 配置(不构建镜像):
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
version: '3.8'
|
|||
|
|
|
|||
|
|
services:
|
|||
|
|
backend:
|
|||
|
|
build:
|
|||
|
|
context: ./backend
|
|||
|
|
dockerfile: Dockerfile
|
|||
|
|
container_name: audio-dashboard-backend
|
|||
|
|
environment:
|
|||
|
|
- DATABASE_HOST=${DATABASE_HOST:-localhost}
|
|||
|
|
- DATABASE_PORT=${DATABASE_PORT:-3306}
|
|||
|
|
- DATABASE_NAME=${DATABASE_NAME:-audio}
|
|||
|
|
- DATABASE_USER=${DATABASE_USER:-root}
|
|||
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD:-root123}
|
|||
|
|
- APP_NAME=${APP_NAME:-Audio Dashboard API}
|
|||
|
|
- DEBUG=${DEBUG:-True}
|
|||
|
|
- MEILISEARCH_URL=${MEILISEARCH_URL:-http://ec2-18-184-205-87.eu-central-1.compute.amazonaws.com:7700}
|
|||
|
|
- MEILISEARCH_API_KEY=${MEILISEARCH_API_KEY:-young9#!UJsD219921031}
|
|||
|
|
- MEILISEARCH_INDEX=${MEILISEARCH_INDEX:-models}
|
|||
|
|
ports:
|
|||
|
|
- "8083:8000"
|
|||
|
|
restart: unless-stopped
|
|||
|
|
networks:
|
|||
|
|
- audio-network
|
|||
|
|
|
|||
|
|
frontend:
|
|||
|
|
image: nginx:alpine
|
|||
|
|
container_name: audio-dashboard-frontend
|
|||
|
|
ports:
|
|||
|
|
- "8082:80"
|
|||
|
|
volumes:
|
|||
|
|
- ./frontend/dist:/usr/share/nginx/html:ro
|
|||
|
|
- ./frontend/nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|||
|
|
depends_on:
|
|||
|
|
- backend
|
|||
|
|
restart: unless-stopped
|
|||
|
|
networks:
|
|||
|
|
- audio-network
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
audio-network:
|
|||
|
|
driver: bridge
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4. 启动服务
|
|||
|
|
|
|||
|
|
在服务器上执行:
|
|||
|
|
```bash
|
|||
|
|
cd /data/project/dashboard
|
|||
|
|
docker compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5. 查看日志
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看所有服务日志
|
|||
|
|
docker compose logs -f
|
|||
|
|
|
|||
|
|
# 查看前端日志
|
|||
|
|
docker compose logs -f frontend
|
|||
|
|
|
|||
|
|
# 查看后端日志
|
|||
|
|
docker compose logs -f backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 6. 访问应用
|
|||
|
|
|
|||
|
|
- 前端地址:http://服务器 IP:8082
|
|||
|
|
- 后端 API:http://服务器 IP:8083
|
|||
|
|
- API 文档:http://服务器 IP:8083/docs
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 方式二:使用 Docker 构建(备选)
|
|||
|
|
|
|||
|
|
如果你想让 Docker 自动构建前端:
|
|||
|
|
|
|||
|
|
1. 上传整个 `frontend` 目录到服务器
|
|||
|
|
2. 使用原始的 `docker-compose.yml`(包含 `build` 配置)
|
|||
|
|
3. 执行 `docker compose build --no-cache frontend`
|
|||
|
|
4. 执行 `docker compose up -d`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 更新部署
|
|||
|
|
|
|||
|
|
### 仅更新前端
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 本地重新构建
|
|||
|
|
cd frontend
|
|||
|
|
pnpm build
|
|||
|
|
|
|||
|
|
# 2. 上传 dist 目录到服务器
|
|||
|
|
rsync -avz --progress dist/ user@server:/data/project/dashboard/frontend/dist/
|
|||
|
|
|
|||
|
|
# 3. 重启前端容器
|
|||
|
|
docker compose restart frontend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 仅更新后端
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 上传修改的后端文件到服务器
|
|||
|
|
|
|||
|
|
# 2. 重新构建后端镜像
|
|||
|
|
docker compose build --no-cache backend
|
|||
|
|
|
|||
|
|
# 3. 重启后端容器
|
|||
|
|
docker compose up -d backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 注意事项
|
|||
|
|
|
|||
|
|
1. **确保后端端口正确**
|
|||
|
|
- 后端服务运行在 8083 端口
|
|||
|
|
- Nginx 配置中已设置代理到 `http://backend:8000`(容器内部)
|
|||
|
|
|
|||
|
|
2. **文件权限**
|
|||
|
|
- 确保 dist 目录有读取权限
|
|||
|
|
- Nginx 容器需要能读取 dist 目录中的文件
|
|||
|
|
|
|||
|
|
3. **跨域问题**
|
|||
|
|
- Nginx 已配置 `/api` 代理,前端请求会自动转发到后端
|
|||
|
|
- 不需要额外配置 CORS
|
|||
|
|
|
|||
|
|
4. **缓存问题**
|
|||
|
|
- 静态资源已配置长期缓存(1 年)
|
|||
|
|
- 更新后如果浏览器缓存未更新,可以强制刷新(Ctrl+F5)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🛠️ 常见问题
|
|||
|
|
|
|||
|
|
### Q: 前端页面空白
|
|||
|
|
A: 打开浏览器控制台查看错误,可能是:
|
|||
|
|
- 后端服务未启动
|
|||
|
|
- API 代理配置错误
|
|||
|
|
- 静态文件路径错误
|
|||
|
|
|
|||
|
|
### Q: API 请求失败
|
|||
|
|
A: 检查:
|
|||
|
|
- 后端容器是否正常运行:`docker compose ps`
|
|||
|
|
- 后端日志是否有错误:`docker compose logs backend`
|
|||
|
|
- 网络连接是否正常
|
|||
|
|
|
|||
|
|
### Q: 如何停止服务
|
|||
|
|
A:
|
|||
|
|
```bash
|
|||
|
|
# 停止所有服务
|
|||
|
|
docker compose down
|
|||
|
|
|
|||
|
|
# 停止并删除数据卷(谨慎使用)
|
|||
|
|
docker compose down -v
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q: 如何查看服务状态
|
|||
|
|
A:
|
|||
|
|
```bash
|
|||
|
|
# 查看运行状态
|
|||
|
|
docker compose ps
|
|||
|
|
|
|||
|
|
# 查看磁盘使用
|
|||
|
|
docker system df
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📂 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/data/project/dashboard/
|
|||
|
|
├── docker-compose.yml # Docker 编排配置
|
|||
|
|
├── backend/
|
|||
|
|
│ ├── Dockerfile # 后端镜像配置
|
|||
|
|
│ ├── main.py # 后端主程序
|
|||
|
|
│ ├── requirements.txt # Python 依赖
|
|||
|
|
│ └── ...
|
|||
|
|
└── frontend/
|
|||
|
|
├── dist/ # 构建产物(上传到这里)
|
|||
|
|
│ ├── index.html
|
|||
|
|
│ ├── assets/
|
|||
|
|
│ └── ...
|
|||
|
|
└── nginx.conf # Nginx 配置
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 快速部署命令汇总
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 本地构建
|
|||
|
|
cd frontend && pnpm build
|
|||
|
|
|
|||
|
|
# 2. 上传到服务器
|
|||
|
|
rsync -avz --progress dist/ user@server:/data/project/dashboard/frontend/dist/
|
|||
|
|
|
|||
|
|
# 3. 在服务器上启动
|
|||
|
|
cd /data/project/dashboard
|
|||
|
|
docker compose up -d
|
|||
|
|
|
|||
|
|
# 4. 查看状态
|
|||
|
|
docker compose ps
|
|||
|
|
|
|||
|
|
# 5. 查看日志
|
|||
|
|
docker compose logs -f
|
|||
|
|
```
|