功能特性: - 用户端充值记录页面,从使用日志中分离 - 充值记录中的去开发票功能 - 管理员发票管理页面 - 发票申请、处理、邮件通知功能 - 侧边栏菜单更新 - UI优化和控制台清理 - Docker部署配置 - 生产环境安全配置
275 lines
6.8 KiB
Markdown
275 lines
6.8 KiB
Markdown
# NewAPI Docker 本地部署指南
|
||
|
||
## 概述
|
||
|
||
本指南介绍如何使用Docker部署修改后的NewAPI本地版本,而不是使用远程仓库的镜像。
|
||
|
||
## 文件说明
|
||
|
||
### 主要文件
|
||
- `Dockerfile` - Docker镜像构建文件
|
||
- `docker-compose.local.yml` - 本地构建版本的Docker Compose配置
|
||
- `docker-compose.yml` - 修改后的Docker Compose配置(使用本地构建)
|
||
- `.dockerignore` - Docker构建时忽略的文件
|
||
- `build-and-deploy.sh` - 自动化构建和部署脚本
|
||
|
||
### 版本文件
|
||
- `VERSION` - 包含自定义版本号 `v1.0.0-custom`
|
||
|
||
## 快速部署
|
||
|
||
### 方法一:使用自动化脚本(推荐)
|
||
|
||
```bash
|
||
# 运行自动化构建和部署脚本
|
||
./build-and-deploy.sh
|
||
```
|
||
|
||
### 方法二:手动部署
|
||
|
||
```bash
|
||
# 1. 构建并启动服务
|
||
docker-compose -f docker-compose.local.yml up -d --build
|
||
|
||
# 2. 查看服务状态
|
||
docker-compose -f docker-compose.local.yml ps
|
||
|
||
# 3. 查看日志
|
||
docker-compose -f docker-compose.local.yml logs -f new-api
|
||
```
|
||
|
||
## 服务配置
|
||
|
||
### 开发环境配置
|
||
|
||
#### 端口映射
|
||
- **NewAPI**: `3000:3000`
|
||
- **MySQL**: `3306:3306` (默认未暴露,如需外部访问请取消注释)
|
||
|
||
#### 数据持久化
|
||
- **应用数据**: `./data:/data`
|
||
- **日志文件**: `./logs:/app/logs`
|
||
- **MySQL数据**: Docker volume `mysql_data`
|
||
|
||
#### 环境变量
|
||
- `TZ=Asia/Shanghai` - 时区设置
|
||
|
||
### 生产环境配置 ⚠️
|
||
|
||
#### 重要安全提醒
|
||
**当前的 docker-compose.yml 和 docker-compose.local.yml 使用了默认密码,不适合生产环境!**
|
||
|
||
#### 生产环境部署文件
|
||
- `docker-compose.prod.yml` - 生产环境专用配置
|
||
- `env.prod.example` - 生产环境变量模板
|
||
- `deploy-prod.sh` - 自动化生产部署脚本
|
||
|
||
#### 生产环境安全特性
|
||
1. **强密码要求**: 所有密码通过环境变量配置
|
||
2. **网络隔离**: 数据库和Redis不对外暴露端口
|
||
3. **健康检查**: 完整的服务健康监控
|
||
4. **权限控制**: MySQL用户权限最小化
|
||
5. **数据持久化**: 独立的数据卷管理
|
||
6. **会话安全**: 必须配置SESSION_SECRET
|
||
- `ERROR_LOG_ENABLED=true` - 启用错误日志
|
||
- `SQL_DSN=root:123456@tcp(mysql:3306)/new-api` - MySQL连接字符串
|
||
- `REDIS_CONN_STRING=redis://redis` - Redis连接字符串
|
||
|
||
## 自定义修改
|
||
|
||
本部署包含以下界面修改:
|
||
|
||
1. **侧边栏权限控制**
|
||
- 普通用户无法看到"操练场"和"聊天"功能
|
||
- 管理员用户保留完整权限
|
||
|
||
2. **导航栏简化**
|
||
- 隐藏"文档"和"关于"按钮
|
||
- 保留核心导航功能
|
||
|
||
3. **首页优化**
|
||
- 隐藏"获取密钥"和"文档"按钮
|
||
|
||
4. **Footer移除**
|
||
- 完全隐藏页面底部区域
|
||
|
||
## 管理命令
|
||
|
||
### 查看服务状态
|
||
```bash
|
||
docker-compose -f docker-compose.local.yml ps
|
||
```
|
||
|
||
### 查看日志
|
||
```bash
|
||
# 查看所有服务日志
|
||
docker-compose -f docker-compose.local.yml logs
|
||
|
||
# 实时查看NewAPI日志
|
||
docker-compose -f docker-compose.local.yml logs -f new-api
|
||
|
||
# 查看MySQL日志
|
||
docker-compose -f docker-compose.local.yml logs mysql
|
||
```
|
||
|
||
### 重启服务
|
||
```bash
|
||
# 重启所有服务
|
||
docker-compose -f docker-compose.local.yml restart
|
||
|
||
# 仅重启NewAPI服务
|
||
docker-compose -f docker-compose.local.yml restart new-api
|
||
```
|
||
|
||
### 停止服务
|
||
```bash
|
||
docker-compose -f docker-compose.local.yml down
|
||
```
|
||
|
||
### 完全清理
|
||
```bash
|
||
# 停止并删除所有容器、网络
|
||
docker-compose -f docker-compose.local.yml down
|
||
|
||
# 删除数据卷(注意:会丢失所有数据)
|
||
docker-compose -f docker-compose.local.yml down -v
|
||
|
||
# 清理未使用的镜像
|
||
docker image prune -f
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **端口冲突**
|
||
- 确保3000端口未被其他服务占用
|
||
- 可以修改docker-compose.local.yml中的端口映射
|
||
|
||
2. **构建失败**
|
||
- 检查Docker和Docker Compose版本
|
||
- 确保有足够的磁盘空间
|
||
- 查看构建日志:`docker-compose -f docker-compose.local.yml build --no-cache`
|
||
|
||
3. **服务启动失败**
|
||
- 查看容器日志:`docker-compose -f docker-compose.local.yml logs new-api`
|
||
- 检查数据库连接配置
|
||
- 确保MySQL服务正常启动
|
||
|
||
4. **数据库连接问题**
|
||
- 等待MySQL完全启动(通常需要30-60秒)
|
||
- 检查数据库密码配置是否一致
|
||
- 查看MySQL日志:`docker-compose -f docker-compose.local.yml logs mysql`
|
||
|
||
### 健康检查
|
||
|
||
NewAPI服务包含健康检查,每30秒检查一次服务状态:
|
||
|
||
```bash
|
||
# 手动检查服务健康状态
|
||
curl http://localhost:3000/api/status
|
||
```
|
||
|
||
### 性能优化
|
||
|
||
1. **资源限制**
|
||
- 可在docker-compose.local.yml中添加内存和CPU限制
|
||
|
||
2. **缓存优化**
|
||
- 启用Redis缓存以提高性能
|
||
- 配置适当的缓存策略
|
||
|
||
## 更新部署
|
||
|
||
当代码有更新时:
|
||
|
||
```bash
|
||
# 方法一:使用脚本(推荐)
|
||
./build-and-deploy.sh
|
||
|
||
# 方法二:手动更新
|
||
docker-compose -f docker-compose.local.yml down
|
||
docker-compose -f docker-compose.local.yml build --no-cache
|
||
docker-compose -f docker-compose.local.yml up -d
|
||
```
|
||
|
||
## 生产环境建议
|
||
|
||
1. **安全设置**
|
||
- 修改默认数据库密码
|
||
- 配置防火墙规则
|
||
- 使用HTTPS
|
||
|
||
2. **监控和日志**
|
||
- 配置日志轮转
|
||
- 设置监控告警
|
||
- 定期备份数据
|
||
|
||
3. **性能调优**
|
||
- 根据负载调整资源配置
|
||
- 配置负载均衡
|
||
- 优化数据库设置
|
||
|
||
## 支持
|
||
|
||
如有问题,请检查:
|
||
1. 日志文件
|
||
2. 容器状态
|
||
3. 网络连接
|
||
4. 资源使用情况
|
||
|
||
## 🏭 生产环境专用配置
|
||
|
||
### ⚠️ 重要安全警告
|
||
**当前的 docker-compose.yml 和 docker-compose.local.yml 使用默认密码,绝对不能用于生产环境!**
|
||
|
||
### 生产环境专用文件
|
||
- `docker-compose.prod.yml` - 生产环境Docker配置
|
||
- `env.prod.example` - 生产环境变量模板
|
||
- `deploy-prod.sh` - 自动化生产部署脚本
|
||
- `nginx-example.conf` - Nginx反向代理配置
|
||
- `mysql-init/` - MySQL安全初始化脚本
|
||
|
||
### 生产环境部署步骤
|
||
|
||
```bash
|
||
# 1. 复制并配置环境变量
|
||
cp env.prod.example .env.prod
|
||
nano .env.prod # 必须修改所有密码!
|
||
|
||
# 2. 自动化部署(推荐)
|
||
./deploy-prod.sh
|
||
|
||
# 或手动部署
|
||
docker-compose -f docker-compose.prod.yml --env-file .env.prod up -d --build
|
||
```
|
||
|
||
### 生产环境安全特性
|
||
- ✅ 强密码要求(环境变量配置)
|
||
- ✅ 网络隔离(数据库不对外暴露)
|
||
- ✅ 健康检查和自动重启
|
||
- ✅ MySQL权限最小化
|
||
- ✅ Redis密码保护
|
||
- ✅ 会话密钥安全配置
|
||
- ✅ 性能优化配置
|
||
|
||
### 必须配置的环境变量
|
||
```bash
|
||
MYSQL_ROOT_PASSWORD=strong_password_12+_chars
|
||
MYSQL_PASSWORD=strong_password_12+_chars
|
||
REDIS_PASSWORD=strong_password_12+_chars
|
||
SESSION_SECRET=random_string_32+_chars
|
||
```
|
||
|
||
### 生产环境安全检查清单
|
||
- [ ] 修改所有默认密码
|
||
- [ ] 设置强密码(12位以上)
|
||
- [ ] 配置SESSION_SECRET(32位以上)
|
||
- [ ] 配置防火墙规则
|
||
- [ ] 设置SSL证书(参考nginx-example.conf)
|
||
- [ ] 配置反向代理
|
||
- [ ] 设置定期备份
|
||
- [ ] 监控服务健康状态
|
||
- [ ] 定期更新Docker镜像
|
||
|