- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境) - 集成 Laravel Octane (Swoole) 提升性能 - 新增健康检查、监控脚本及部署文档 - 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch) - 优化文档转换、预览服务及队列任务 - 添加 CreateAdminUser 命令与路由健康检查接口 - 新增 Swoole 队列兼容性测试套件 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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: 使用构建脚本(推荐)
# 在项目根目录执行
./docker/build.sh
方法2: 手动构建
# 在项目根目录执行
docker build --platform linux/amd64 -t knowledge-base-app:latest .
运行容器
单独运行(测试用)
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/
故障排除
构建失败
- 检查Docker是否运行
- 确保网络连接正常(需要下载依赖)
- 检查磁盘空间是否充足
容器启动失败
- 检查环境变量配置
- 查看容器日志:
docker logs <container-name> - 检查端口是否被占用
权限问题
确保storage和bootstrap/cache目录有正确的写权限。
镜像导出和导入
导出镜像
docker save knowledge-base-app:latest | gzip > knowledge-base-app.tar.gz
导入镜像
gunzip -c knowledge-base-app.tar.gz | docker load
安全注意事项
- 生产环境请使用HTTPS
- 定期更新基础镜像
- 使用非root用户运行应用
- 配置适当的防火墙规则