API/DOCKER_DEPLOYMENT.md
chenpei 08dd1c7f75 初始提交:添加充值记录和发票管理功能
功能特性:
- 用户端充值记录页面,从使用日志中分离
- 充值记录中的去开发票功能
- 管理员发票管理页面
- 发票申请、处理、邮件通知功能
- 侧边栏菜单更新
- UI优化和控制台清理
- Docker部署配置
- 生产环境安全配置
2025-09-04 18:07:16 +08:00

275 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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镜像