323 lines
6.5 KiB
Markdown
323 lines
6.5 KiB
Markdown
# NEX Docus Docker 部署文档
|
||
|
||
完整的 Docker 容器化部署方案,支持一键部署、升级、备份等功能。
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 环境要求
|
||
|
||
- Docker 20.10+
|
||
- Docker Compose 2.0+
|
||
- 至少 2GB 可用内存
|
||
- 至少 10GB 可用磁盘空间
|
||
|
||
### 2. 首次部署
|
||
|
||
```bash
|
||
# 1. 克隆项目(如果还没有)
|
||
git clone <your-repo-url>
|
||
cd "NEX Docus"
|
||
|
||
# 2. 配置环境变量
|
||
cp .env.example .env
|
||
vim .env # 编辑配置文件
|
||
|
||
# 3. 初始化并启动
|
||
./deploy.sh init
|
||
```
|
||
|
||
### 3. 配置说明
|
||
|
||
编辑 `.env` 文件,修改以下关键配置:
|
||
|
||
```bash
|
||
# 数据库配置
|
||
DB_NAME=nex_docus
|
||
DB_USER=nexdocus
|
||
DB_PASSWORD=your_secure_password_here
|
||
|
||
# Redis 配置
|
||
REDIS_PASSWORD=your_redis_password_here
|
||
|
||
# JWT 密钥(必须修改!)
|
||
SECRET_KEY=your-secret-key-change-me-in-production
|
||
|
||
# 服务端口配置
|
||
FRONTEND_PORT=8080 # 前端访问端口
|
||
BACKEND_PORT=8000 # 后端 API 端口
|
||
|
||
# 存储路径配置(用于存储项目文档和上传文件)
|
||
STORAGE_PATH=./storage # 可修改为绝对路径,如 /data/nex-docus-storage
|
||
|
||
# 管理员账号
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=Your_Secure_Password_123
|
||
ADMIN_EMAIL=admin@yourdomain.com
|
||
|
||
# API 地址(根据实际域名修改)
|
||
VITE_API_BASE_URL=http://yourdomain.com:8000
|
||
```
|
||
|
||
**⚠️ 重要提示:**
|
||
- `SECRET_KEY` 必须修改为随机字符串(可用 `openssl rand -hex 32` 生成)
|
||
- 生产环境必须修改所有默认密码
|
||
- `DEBUG` 设置为 `false`
|
||
- `STORAGE_PATH` 可配置为绝对路径,便于数据管理和备份
|
||
|
||
## 📋 部署脚本使用
|
||
|
||
### 基本命令
|
||
|
||
```bash
|
||
# 查看帮助
|
||
./deploy.sh help
|
||
|
||
# 初始化部署(首次部署)
|
||
./deploy.sh init
|
||
|
||
# 启动服务
|
||
./deploy.sh start
|
||
|
||
# 停止服务
|
||
./deploy.sh stop
|
||
|
||
# 重启服务
|
||
./deploy.sh restart
|
||
|
||
# 查看服务状态
|
||
./deploy.sh status
|
||
```
|
||
|
||
### 日志管理
|
||
|
||
```bash
|
||
# 查看所有服务日志
|
||
./deploy.sh logs
|
||
|
||
# 查看后端日志
|
||
./deploy.sh logs backend
|
||
|
||
# 查看前端日志
|
||
./deploy.sh logs frontend
|
||
|
||
# 查看数据库日志
|
||
./deploy.sh logs mysql
|
||
|
||
# 查看 Redis 日志
|
||
./deploy.sh logs redis
|
||
```
|
||
|
||
### 升级部署
|
||
|
||
```bash
|
||
# 升级到最新版本
|
||
./deploy.sh upgrade
|
||
```
|
||
|
||
升级流程:
|
||
1. 拉取最新代码
|
||
2. 停止服务
|
||
3. 构建新镜像
|
||
4. 更新数据库
|
||
5. 启动服务
|
||
6. 清理旧镜像
|
||
|
||
### 数据库管理
|
||
|
||
```bash
|
||
# 备份数据库
|
||
./deploy.sh backup
|
||
|
||
# 恢复数据库
|
||
./deploy.sh restore ./backups/nex_docus_20240101_120000.sql
|
||
```
|
||
|
||
### 卸载
|
||
|
||
```bash
|
||
# 完全卸载(删除所有容器、镜像和数据)
|
||
./deploy.sh uninstall
|
||
```
|
||
|
||
## 🏗️ 架构说明
|
||
|
||
### 服务组成
|
||
|
||
| 服务 | 端口 | 说明 |
|
||
|------|------|------|
|
||
| frontend | 8080 | 前端 Nginx 服务 |
|
||
| backend | 8000 | 后端 FastAPI 服务 |
|
||
| mysql | 3306 | MySQL 8.0 数据库 |
|
||
| redis | 6379 | Redis 缓存 |
|
||
|
||
### 目录结构
|
||
|
||
```
|
||
NEX Docus/
|
||
├── backend/ # 后端代码
|
||
│ ├── app/ # 应用代码
|
||
│ ├── scripts/ # 脚本文件
|
||
│ │ └── init_db.py # 数据库初始化
|
||
│ ├── Dockerfile # 后端镜像
|
||
│ └── requirements.txt # Python 依赖
|
||
├── forntend/ # 前端代码
|
||
│ ├── src/ # 源代码
|
||
│ ├── Dockerfile # 前端镜像
|
||
│ └── nginx.conf # Nginx 配置
|
||
├── docker-compose.yml # Docker 编排文件
|
||
├── .env.example # 环境变量示例
|
||
├── deploy.sh # 部署管理脚本
|
||
└── DEPLOY.md # 部署文档
|
||
```
|
||
|
||
### 数据持久化
|
||
|
||
所有重要数据都已持久化存储:
|
||
|
||
- `mysql_data`: MySQL 数据(Docker Volume)
|
||
- `redis_data`: Redis 数据(Docker Volume)
|
||
- `${STORAGE_PATH}`: 用户上传的文件和项目文档(宿主机目录映射)
|
||
- 默认路径: `./storage`
|
||
- 可在 `.env` 中配置 `STORAGE_PATH` 修改为其他路径
|
||
- 建议使用绝对路径,便于备份和迁移
|
||
|
||
**存储目录说明:**
|
||
- 该目录存储所有项目文档和上传的文件
|
||
- 支持独立备份和迁移
|
||
- 可配置到独立磁盘或网络存储
|
||
|
||
## 🔧 常见问题
|
||
|
||
### 1. 端口被占用
|
||
|
||
如果默认端口被占用,可以在 `.env` 中修改:
|
||
|
||
```bash
|
||
FRONTEND_PORT=8080
|
||
BACKEND_PORT=8001
|
||
MYSQL_PORT=3307
|
||
REDIS_PORT=6380
|
||
```
|
||
|
||
### 2. 数据库连接失败
|
||
|
||
检查 MySQL 容器状态:
|
||
```bash
|
||
docker logs nex-docus-mysql
|
||
```
|
||
|
||
确保数据库完全启动(约需 10-15 秒)
|
||
|
||
### 3. 前端无法访问后端 API
|
||
|
||
检查 `.env` 中的 `VITE_API_BASE_URL` 配置,确保与实际部署地址匹配。
|
||
|
||
### 4. 内存不足
|
||
|
||
如果服务器内存小于 2GB,可能导致 MySQL 无法启动。建议:
|
||
- 增加服务器内存
|
||
- 或使用外部 MySQL 服务
|
||
|
||
### 5. 镜像下载缓慢
|
||
|
||
已配置国内镜像加速:
|
||
- Docker 基础镜像使用华为云镜像
|
||
- Debian APT 包使用阿里云镜像源
|
||
- Python 使用清华源
|
||
- Node 使用淘宝镜像
|
||
|
||
**Docker 镜像源配置**(如需更换):
|
||
|
||
编辑 `/etc/docker/daemon.json`:
|
||
```json
|
||
{
|
||
"registry-mirrors": [
|
||
"https://mirror.ccs.tencentyun.com",
|
||
"https://docker.mirrors.ustc.edu.cn"
|
||
]
|
||
}
|
||
```
|
||
|
||
**说明**:
|
||
- `backend/Dockerfile` 已配置阿里云 Debian APT 源,系统依赖安装速度大幅提升
|
||
- 如构建仍然缓慢,可尝试清华源:`mirrors.tuna.tsinghua.edu.cn`
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **修改默认密码**
|
||
- 管理员账号密码
|
||
- 数据库密码
|
||
- Redis 密码
|
||
- JWT 密钥
|
||
|
||
2. **配置防火墙**
|
||
```bash
|
||
# 只开放必要端口
|
||
ufw allow 80/tcp
|
||
ufw allow 443/tcp
|
||
ufw enable
|
||
```
|
||
|
||
3. **使用 HTTPS**
|
||
- 建议配置 Nginx 反向代理
|
||
- 使用 Let's Encrypt 免费证书
|
||
|
||
4. **定期备份**
|
||
```bash
|
||
# 添加定时任务
|
||
crontab -e
|
||
# 每天凌晨 2 点备份
|
||
0 2 * * * cd /path/to/nex-docus && ./deploy.sh backup
|
||
```
|
||
|
||
5. **关闭调试模式**
|
||
```bash
|
||
DEBUG=false
|
||
```
|
||
|
||
## 📊 监控与维护
|
||
|
||
### 查看资源使用情况
|
||
|
||
```bash
|
||
# Docker 容器资源使用
|
||
docker stats
|
||
|
||
# 磁盘使用情况
|
||
df -h
|
||
|
||
# 清理 Docker 缓存
|
||
docker system prune -a
|
||
```
|
||
|
||
### 定期维护
|
||
|
||
```bash
|
||
# 每周检查日志大小
|
||
du -sh backend/logs
|
||
|
||
# 清理旧日志
|
||
find backend/logs -name "*.log" -mtime +30 -delete
|
||
```
|
||
|
||
## 🆘 技术支持
|
||
|
||
如遇问题,请检查:
|
||
|
||
1. 服务日志: `./deploy.sh logs <服务名>`
|
||
2. Docker 状态: `docker ps -a`
|
||
3. 系统资源: `top` 或 `htop`
|
||
|
||
## 📝 更新日志
|
||
|
||
### v1.0.0 (2024-12-20)
|
||
- ✨ 完整的 Docker 部署方案
|
||
- ✨ 一键初始化和升级
|
||
- ✨ 数据库备份恢复
|
||
- ✨ 国内镜像加速
|
||
- ✨ 完善的文档和脚本
|
||
|
||
---
|
||
|
||
**祝部署顺利!** 🎉
|