Files
lizhuoran 3c206e9e06 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>
2026-02-28 15:51:19 +08:00
..

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/

故障排除

构建失败

  1. 检查Docker是否运行
  2. 确保网络连接正常(需要下载依赖)
  3. 检查磁盘空间是否充足

容器启动失败

  1. 检查环境变量配置
  2. 查看容器日志: docker logs <container-name>
  3. 检查端口是否被占用

权限问题

确保storage和bootstrap/cache目录有正确的写权限。

镜像导出和导入

导出镜像

docker save knowledge-base-app:latest | gzip > knowledge-base-app.tar.gz

导入镜像

gunzip -c knowledge-base-app.tar.gz | docker load

安全注意事项

  1. 生产环境请使用HTTPS
  2. 定期更新基础镜像
  3. 使用非root用户运行应用
  4. 配置适当的防火墙规则