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:
131
docker/README.md
Normal file
131
docker/README.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Docker镜像构建说明
|
||||
|
||||
## 概述
|
||||
|
||||
本目录包含了Laravel知识库系统的Docker化配置文件,支持构建适用于OpenEuler服务器的amd64架构镜像。
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
docker/
|
||||
├── build.sh # 镜像构建脚本
|
||||
├── php/
|
||||
│ └── php.ini # PHP配置
|
||||
├── supervisor/
|
||||
│ └── supervisord.conf # Supervisor配置
|
||||
├── mysql/
|
||||
│ └── my.cnf # MySQL配置
|
||||
├── redis/
|
||||
│ └── redis.conf # Redis配置
|
||||
└── README.md # 本文件
|
||||
```
|
||||
|
||||
## 镜像特性
|
||||
|
||||
- **基础环境**: PHP 8.2-cli + Alpine Linux
|
||||
- **Web服务器**: Swoole (通过 Laravel Octane)
|
||||
- **架构**: linux/amd64 (OpenEuler兼容)
|
||||
- **文档转换**: Pandoc
|
||||
- **进程管理**: Supervisor
|
||||
- **优化**: 多阶段构建,最小化镜像大小
|
||||
|
||||
## 构建镜像
|
||||
|
||||
### 方法1: 使用构建脚本(推荐)
|
||||
|
||||
```bash
|
||||
# 在项目根目录执行
|
||||
./docker/build.sh
|
||||
```
|
||||
|
||||
### 方法2: 手动构建
|
||||
|
||||
```bash
|
||||
# 在项目根目录执行
|
||||
docker build --platform linux/amd64 -t knowledge-base-app:latest .
|
||||
```
|
||||
|
||||
## 运行容器
|
||||
|
||||
### 单独运行(测试用)
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name knowledge-base \
|
||||
-p 8000:8000 \
|
||||
-e APP_ENV=production \
|
||||
-e APP_KEY=your-app-key \
|
||||
knowledge-base-app:latest
|
||||
```
|
||||
|
||||
### 使用docker-compose(推荐)
|
||||
|
||||
请参考项目根目录的docker-compose.yml文件。
|
||||
|
||||
## 环境变量
|
||||
|
||||
主要环境变量配置:
|
||||
|
||||
- `APP_ENV`: 应用环境 (production/local)
|
||||
- `APP_KEY`: Laravel应用密钥
|
||||
- `DB_HOST`: 数据库主机
|
||||
- `DB_DATABASE`: 数据库名称
|
||||
- `DB_USERNAME`: 数据库用户名
|
||||
- `DB_PASSWORD`: 数据库密码
|
||||
- `REDIS_HOST`: Redis主机
|
||||
- `MEILISEARCH_HOST`: Meilisearch主机
|
||||
|
||||
## 健康检查
|
||||
|
||||
镜像内置健康检查端点:
|
||||
|
||||
- HTTP检查: `http://localhost/health`
|
||||
- PHP-FPM检查: `http://localhost/ping`
|
||||
|
||||
## 日志
|
||||
|
||||
日志文件位置:
|
||||
|
||||
- Swoole访问日志: `/var/log/supervisor/swoole_stdout.log`
|
||||
- Swoole错误日志: `/var/log/supervisor/swoole_stderr.log`
|
||||
- PHP错误日志: `/var/log/php_errors.log`
|
||||
- Supervisor日志: `/var/log/supervisor/`
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 构建失败
|
||||
|
||||
1. 检查Docker是否运行
|
||||
2. 确保网络连接正常(需要下载依赖)
|
||||
3. 检查磁盘空间是否充足
|
||||
|
||||
### 容器启动失败
|
||||
|
||||
1. 检查环境变量配置
|
||||
2. 查看容器日志: `docker logs <container-name>`
|
||||
3. 检查端口是否被占用
|
||||
|
||||
### 权限问题
|
||||
|
||||
确保storage和bootstrap/cache目录有正确的写权限。
|
||||
|
||||
## 镜像导出和导入
|
||||
|
||||
### 导出镜像
|
||||
|
||||
```bash
|
||||
docker save knowledge-base-app:latest | gzip > knowledge-base-app.tar.gz
|
||||
```
|
||||
|
||||
### 导入镜像
|
||||
|
||||
```bash
|
||||
gunzip -c knowledge-base-app.tar.gz | docker load
|
||||
```
|
||||
|
||||
## 安全注意事项
|
||||
|
||||
1. 生产环境请使用HTTPS
|
||||
2. 定期更新基础镜像
|
||||
3. 使用非root用户运行应用
|
||||
4. 配置适当的防火墙规则
|
||||
Reference in New Issue
Block a user