# 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 ` 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. 配置适当的防火墙规则