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

View File

@@ -0,0 +1,102 @@
# Docker部署需求文档
## 介绍
本文档定义了将Laravel知识库系统Docker化部署到OpenEuler服务器的需求。系统需要支持完整的生产环境运行包括Web应用、数据库、缓存、搜索引擎和队列处理等所有组件。
## 术语表
- **Docker镜像**: 包含应用程序及其运行环境的可执行包
- **容器编排**: 使用docker-compose管理多个相关容器的技术
- **知识库系统**: 基于Laravel框架的文档管理和搜索系统
- **OpenEuler服务器**: 目标部署环境的Linux服务器
- **生产环境**: 实际运行业务的服务器环境
- **数据持久化**: 确保容器重启后数据不丢失的机制
- **健康检查**: 监控容器运行状态的机制
## 需求
### 需求1
**用户故事:** 作为系统管理员我希望能够构建包含完整运行环境的Docker镜像以便在OpenEuler服务器上部署知识库系统。
#### 验收标准
1. WHEN 构建Docker镜像时 THEN 系统应构建为linux/amd64架构以确保OpenEuler兼容性
2. WHEN 构建Docker镜像时 THEN 系统应包含PHP 8.2运行环境和所有必需的扩展
3. WHEN 构建Docker镜像时 THEN 系统应包含Composer依赖和NPM构建产物
4. WHEN 构建Docker镜像时 THEN 系统应包含Nginx Web服务器配置
5. WHEN 构建Docker镜像时 THEN 系统应包含文档转换工具Pandoc
6. WHEN 构建Docker镜像时 THEN 系统应优化镜像大小并使用多阶段构建
### 需求2
**用户故事:** 作为系统管理员我希望通过docker-compose编排所有服务以便一键启动完整的应用栈。
#### 验收标准
1. WHEN 启动服务时 THEN 系统应启动MySQL数据库服务并配置持久化存储
2. WHEN 启动服务时 THEN 系统应启动Redis缓存服务并配置内存限制
3. WHEN 启动服务时 THEN 系统应启动Meilisearch搜索引擎并配置数据持久化
4. WHEN 启动服务时 THEN 系统应启动Laravel应用容器并连接所有依赖服务
5. WHEN 启动服务时 THEN 系统应启动队列处理容器处理后台任务
### 需求3
**用户故事:** 作为系统管理员,我希望配置数据持久化和目录映射,以便数据在容器重启后不丢失。
#### 验收标准
1. WHEN 配置存储时 THEN 系统应将项目代码目录映射到容器内部
2. WHEN 配置存储时 THEN 系统应将上传文档存储目录持久化到宿主机
3. WHEN 配置存储时 THEN 系统应将数据库数据目录持久化到宿主机
4. WHEN 配置存储时 THEN 系统应将搜索引擎数据目录持久化到宿主机
5. WHEN 配置存储时 THEN 系统应将日志目录映射到宿主机便于查看
### 需求4
**用户故事:** 作为系统管理员,我希望配置环境变量和网络,以便服务间能够正确通信。
#### 验收标准
1. WHEN 配置网络时 THEN 系统应创建专用Docker网络供服务间通信
2. WHEN 配置环境时 THEN 系统应设置数据库连接参数指向MySQL容器
3. WHEN 配置环境时 THEN 系统应设置Redis连接参数指向Redis容器
4. WHEN 配置环境时 THEN 系统应设置Meilisearch连接参数指向搜索容器
5. WHEN 配置环境时 THEN 系统应配置应用密钥和调试模式
### 需求5
**用户故事:** 作为系统管理员,我希望实现健康检查和自动重启,以便确保服务的高可用性。
#### 验收标准
1. WHEN 服务运行时 THEN 系统应对Web应用进行HTTP健康检查
2. WHEN 服务运行时 THEN 系统应对数据库进行连接健康检查
3. WHEN 服务运行时 THEN 系统应对Redis进行连接健康检查
4. WHEN 服务运行时 THEN 系统应对Meilisearch进行API健康检查
5. WHEN 服务异常时 THEN 系统应自动重启失败的容器
### 需求6
**用户故事:** 作为系统管理员我希望能够导出和导入Docker镜像以便在离线环境中部署。
#### 验收标准
1. WHEN 导出镜像时 THEN 系统应将构建好的amd64架构镜像打包为tar文件
2. WHEN 导入镜像时 THEN 系统应能够从tar文件加载镜像到OpenEuler服务器的Docker
3. WHEN 传输镜像时 THEN 系统应支持压缩以减少文件大小
4. WHEN 验证镜像时 THEN 系统应提供镜像完整性和架构兼容性检查方法
5. WHEN 部署镜像时 THEN 系统应提供详细的OpenEuler部署文档和脚本
### 需求7
**用户故事:** 作为开发人员我希望有开发环境的Docker配置以便本地开发和测试。
#### 验收标准
1. WHEN 开发环境启动时 THEN 系统应启用代码热重载功能
2. WHEN 开发环境启动时 THEN 系统应启用调试模式和详细日志
3. WHEN 开发环境启动时 THEN 系统应映射源代码目录支持实时编辑
4. WHEN 开发环境启动时 THEN 系统应暴露所有必要的端口供调试
5. WHEN 开发环境启动时 THEN 系统应包含开发工具和测试数据