feat: 新增 Docker 部署支持、Swoole/Octane 集成及相关优化

- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境)
- 集成 Laravel Octane (Swoole) 提升性能
- 新增健康检查、监控脚本及部署文档
- 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch)
- 优化文档转换、预览服务及队列任务
- 添加 CreateAdminUser 命令与路由健康检查接口
- 新增 Swoole 队列兼容性测试套件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 15:51:19 +08:00
parent acf549c43c
commit 3c206e9e06
90 changed files with 12731 additions and 1255 deletions

232
docker/PACKAGING_README.md Normal file
View File

@@ -0,0 +1,232 @@
# Docker镜像打包和部署工具
本目录包含用于Docker镜像打包和OpenEuler服务器部署的完整工具集。
## 脚本概览
### 核心脚本
1. **export-images.sh** - Docker镜像导出脚本
2. **compress-and-verify.sh** - 镜像压缩和完整性检查脚本
3. **import-and-verify.sh** - 镜像导入和验证脚本
4. **deploy-to-openeuler.sh** - OpenEuler服务器部署脚本
5. **one-click-deploy.sh** - 一键部署脚本
### 文档
- **DEPLOYMENT_GUIDE.md** - 详细部署指南
- **PACKAGING_README.md** - 本文件
## 快速开始
### 1. 导出镜像
```bash
# 基本导出
./docker/export-images.sh
# 导出并压缩,验证完整性
./docker/export-images.sh -c -v
# 导出到指定目录
./docker/export-images.sh -o /path/to/export -c -v
```
### 2. 压缩和验证
```bash
# 压缩现有镜像文件
./docker/compress-and-verify.sh
# 仅验证文件完整性
./docker/compress-and-verify.sh --verify-only
# 解压缩文件
./docker/compress-and-verify.sh --uncompress
```
### 3. 导入镜像
```bash
# 导入镜像文件
./docker/import-and-verify.sh /path/to/images
# 强制导入并测试
./docker/import-and-verify.sh -f --test-run
# 仅验证不导入
./docker/import-and-verify.sh --verify-only
```
### 4. 部署到OpenEuler
```bash
# 全新部署
sudo ./docker/deploy-to-openeuler.sh /path/to/images
# 更新现有部署
sudo ./docker/deploy-to-openeuler.sh -u /path/to/images
# 备份并部署
sudo ./docker/deploy-to-openeuler.sh -b /path/to/images
```
### 5. 一键部署
```bash
# 导出镜像
./docker/one-click-deploy.sh export -c -v
# 部署到服务器
./docker/one-click-deploy.sh deploy --server 192.168.1.100
# 完整流程
./docker/one-click-deploy.sh full -c --server 192.168.1.100
```
## 典型工作流程
### 开发环境 → 生产环境
1. **在开发环境导出镜像**
```bash
./docker/export-images.sh -c -v -o ./docker-images
```
2. **传输到生产服务器**
```bash
scp -r docker-images/ user@server:/tmp/
```
3. **在生产服务器部署**
```bash
sudo ./docker/deploy-to-openeuler.sh /tmp/docker-images
```
### 离线部署流程
1. **准备镜像包**
```bash
./docker/export-images.sh -c -v
./docker/compress-and-verify.sh -c 9
```
2. **物理传输到目标环境**
3. **导入和部署**
```bash
./docker/import-and-verify.sh -f --test-run
sudo ./docker/deploy-to-openeuler.sh --skip-images
```
## 脚本选项说明
### export-images.sh 选项
- `-c, --compress`: 启用gzip压缩
- `-v, --verify`: 导出后验证完整性
- `-o, --output DIR`: 指定导出目录
- `--custom-images`: 导出指定镜像列表
- `--skip-build`: 跳过镜像构建
### compress-and-verify.sh 选项
- `-c, --compress-level N`: 压缩级别 (1-9)
- `-k, --keep-original`: 保留原始文件
- `-v, --verify-only`: 仅验证不压缩
- `-u, --uncompress`: 解压缩文件
- `--parallel N`: 并行处理数量
### import-and-verify.sh 选项
- `-v, --verify-only`: 仅验证不导入
- `-f, --force`: 强制导入覆盖现有镜像
- `-c, --check-manifest`: 检查清单文件
- `--skip-compatibility`: 跳过兼容性检查
- `--test-run`: 导入后运行测试
### deploy-to-openeuler.sh 选项
- `-d, --deploy-dir DIR`: 部署目录
- `-b, --backup`: 部署前备份
- `-u, --update`: 更新现有部署
- `-r, --rollback`: 回滚到上一版本
- `--skip-docker-install`: 跳过Docker安装
- `--dry-run`: 仅显示操作不执行
## 生成的文件
### 导出过程生成
- `docker-images/` - 镜像文件目录
- `images-manifest.txt` - 镜像清单文件
- `import-images.sh` - 自动生成的导入脚本
- `export.log` - 导出日志
### 部署过程生成
- `/opt/knowledge-base/` - 默认部署目录
- `.env` - 环境配置文件
- `storage/` - 持久化存储目录
- `/var/log/knowledge-base-deploy.log` - 部署日志
## 故障排除
### 常见问题
1. **权限错误**
```bash
sudo chown -R $USER:$USER docker-images/
chmod +x docker/*.sh
```
2. **Docker未运行**
```bash
sudo systemctl start docker
sudo systemctl enable docker
```
3. **磁盘空间不足**
```bash
docker system prune -a
df -h
```
4. **网络连接问题**
```bash
ping target-server
ssh user@target-server
```
### 日志查看
```bash
# 查看导出日志
tail -f docker-images/export.log
# 查看部署日志
sudo tail -f /var/log/knowledge-base-deploy.log
# 查看Docker日志
docker compose logs -f
```
## 最佳实践
1. **始终验证镜像完整性**
2. **在生产部署前进行测试**
3. **定期备份重要数据**
4. **监控系统资源使用**
5. **保持脚本和文档更新**
## 支持的平台
- **源平台**: Linux/macOS (开发环境)
- **目标平台**: OpenEuler 20.03 LTS+
- **架构**: x86_64 (amd64)
- **Docker**: 20.10+
- **Docker Compose**: 2.0+
---
更多详细信息请参考 `DEPLOYMENT_GUIDE.md`