- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境) - 集成 Laravel Octane (Swoole) 提升性能 - 新增健康检查、监控脚本及部署文档 - 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch) - 优化文档转换、预览服务及队列任务 - 添加 CreateAdminUser 命令与路由健康检查接口 - 新增 Swoole 队列兼容性测试套件 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
102 lines
4.7 KiB
Markdown
102 lines
4.7 KiB
Markdown
# 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 系统应包含开发工具和测试数据 |