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:
288
docker/ENVIRONMENT_SETUP.md
Normal file
288
docker/ENVIRONMENT_SETUP.md
Normal file
@@ -0,0 +1,288 @@
|
||||
# 环境配置设置指南
|
||||
|
||||
## 概述
|
||||
|
||||
本指南介绍如何配置和设置知识库系统的Docker部署环境,包括生产环境和开发环境的配置。
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 自动配置(推荐)
|
||||
|
||||
使用自动配置脚本快速设置环境:
|
||||
|
||||
```bash
|
||||
# 生产环境配置
|
||||
./docker/setup-env.sh -e production
|
||||
|
||||
# 开发环境配置
|
||||
./docker/setup-env.sh -e development
|
||||
|
||||
# 交互式配置
|
||||
./docker/setup-env.sh -i
|
||||
```
|
||||
|
||||
### 2. 手动配置
|
||||
|
||||
如果需要手动配置,请按照以下步骤:
|
||||
|
||||
#### 生产环境
|
||||
|
||||
1. 复制环境模板:
|
||||
```bash
|
||||
cp .env.production .env
|
||||
```
|
||||
|
||||
2. 编辑 `.env` 文件,修改以下关键配置:
|
||||
```bash
|
||||
APP_KEY=base64:your-generated-key-here
|
||||
DB_PASSWORD=your-secure-database-password
|
||||
MEILISEARCH_KEY=your-meilisearch-master-key
|
||||
APP_URL=http://your-domain.com
|
||||
```
|
||||
|
||||
3. 生成应用密钥:
|
||||
```bash
|
||||
php artisan key:generate
|
||||
```
|
||||
|
||||
#### 开发环境
|
||||
|
||||
1. 复制开发环境模板:
|
||||
```bash
|
||||
cp .env.development .env
|
||||
```
|
||||
|
||||
2. 编辑配置(开发环境可以使用默认值)
|
||||
|
||||
## 配置验证
|
||||
|
||||
### 验证环境变量
|
||||
|
||||
```bash
|
||||
# 验证当前环境配置
|
||||
./docker/validate-env.sh
|
||||
```
|
||||
|
||||
### 验证Docker配置
|
||||
|
||||
```bash
|
||||
# 验证生产环境配置
|
||||
docker-compose config
|
||||
|
||||
# 验证开发环境配置
|
||||
docker-compose -f docker-compose.dev.yml config
|
||||
```
|
||||
|
||||
## 启动服务
|
||||
|
||||
### 生产环境
|
||||
|
||||
```bash
|
||||
# 启动所有服务
|
||||
docker-compose up -d
|
||||
|
||||
# 查看服务状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### 开发环境
|
||||
|
||||
```bash
|
||||
# 启动开发环境
|
||||
docker-compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# 查看服务状态
|
||||
docker-compose -f docker-compose.dev.yml ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose -f docker-compose.dev.yml logs -f
|
||||
```
|
||||
|
||||
## 网络测试
|
||||
|
||||
启动服务后,测试网络连接:
|
||||
|
||||
```bash
|
||||
# 测试容器间网络连接
|
||||
./docker/test-network.sh
|
||||
```
|
||||
|
||||
## 应用初始化
|
||||
|
||||
服务启动后,初始化Laravel应用:
|
||||
|
||||
```bash
|
||||
# 运行数据库迁移
|
||||
docker exec knowledge_base_app php artisan migrate
|
||||
|
||||
# 运行数据库种子
|
||||
docker exec knowledge_base_app php artisan db:seed
|
||||
|
||||
# 创建搜索索引
|
||||
docker exec knowledge_base_app php artisan scout:import "App\Models\Document"
|
||||
```
|
||||
|
||||
## 环境配置详解
|
||||
|
||||
### 网络配置
|
||||
|
||||
- **生产环境网络**: `knowledge_base_network` (172.20.0.0/16)
|
||||
- **开发环境网络**: `knowledge_base_dev_network` (172.21.0.0/16)
|
||||
|
||||
### 端口映射
|
||||
|
||||
#### 生产环境
|
||||
- Web应用: 80
|
||||
- MySQL: 3306
|
||||
- Redis: 6379
|
||||
- Meilisearch: 7700
|
||||
|
||||
#### 开发环境
|
||||
- Web应用: 8080
|
||||
- MySQL: 3307
|
||||
- Redis: 6380
|
||||
- Meilisearch: 7701
|
||||
- PHP-FPM调试: 9000
|
||||
|
||||
### 存储卷
|
||||
|
||||
#### 生产环境
|
||||
- 数据库数据: `./storage/mysql`
|
||||
- Redis数据: `./storage/redis`
|
||||
- 搜索数据: `./storage/meilisearch`
|
||||
- 应用存储: `./storage/app`
|
||||
- 日志文件: `./storage/logs`
|
||||
|
||||
#### 开发环境
|
||||
- 数据库数据: `./storage/dev/mysql`
|
||||
- Redis数据: `./storage/dev/redis`
|
||||
- 搜索数据: `./storage/dev/meilisearch`
|
||||
- 应用存储: `./storage/dev/app`
|
||||
- 日志文件: `./storage/dev/logs`
|
||||
|
||||
## 环境变量说明
|
||||
|
||||
### 必需配置
|
||||
|
||||
| 变量名 | 说明 | 示例 |
|
||||
|--------|------|------|
|
||||
| `APP_KEY` | 应用加密密钥 | `base64:xxx...` |
|
||||
| `DB_PASSWORD` | 数据库密码 | `secure_password` |
|
||||
| `MEILISEARCH_KEY` | 搜索引擎密钥 | `master_key_xxx` |
|
||||
|
||||
### 可选配置
|
||||
|
||||
| 变量名 | 默认值 | 说明 |
|
||||
|--------|--------|------|
|
||||
| `APP_NAME` | 知识库系统 | 应用名称 |
|
||||
| `APP_URL` | http://localhost | 应用URL |
|
||||
| `DB_DATABASE` | knowledge_base | 数据库名 |
|
||||
| `DB_USERNAME` | knowledge_user | 数据库用户 |
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **容器启动失败**
|
||||
```bash
|
||||
# 查看容器日志
|
||||
docker-compose logs [service_name]
|
||||
|
||||
# 检查容器状态
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
2. **网络连接问题**
|
||||
```bash
|
||||
# 测试网络连接
|
||||
./docker/test-network.sh
|
||||
|
||||
# 检查网络配置
|
||||
docker network ls
|
||||
docker network inspect knowledge_base_network
|
||||
```
|
||||
|
||||
3. **环境变量问题**
|
||||
```bash
|
||||
# 验证环境变量
|
||||
./docker/validate-env.sh
|
||||
|
||||
# 查看容器环境变量
|
||||
docker exec knowledge_base_app env
|
||||
```
|
||||
|
||||
4. **权限问题**
|
||||
```bash
|
||||
# 修复存储目录权限
|
||||
chmod -R 775 storage
|
||||
chmod -R 775 bootstrap/cache
|
||||
```
|
||||
|
||||
### 重置环境
|
||||
|
||||
如果需要重置环境:
|
||||
|
||||
```bash
|
||||
# 停止所有服务
|
||||
docker-compose down
|
||||
|
||||
# 删除数据卷(注意:这会删除所有数据)
|
||||
docker-compose down -v
|
||||
|
||||
# 重新配置环境
|
||||
./docker/setup-env.sh -f -e production
|
||||
|
||||
# 重新启动服务
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 安全建议
|
||||
|
||||
### 生产环境
|
||||
|
||||
1. **更改默认密码**:确保所有默认密码都已更改
|
||||
2. **使用强密钥**:使用复杂的APP_KEY和MEILISEARCH_KEY
|
||||
3. **限制网络访问**:配置防火墙规则
|
||||
4. **定期备份**:定期备份数据库和文件
|
||||
5. **监控日志**:监控应用和系统日志
|
||||
|
||||
### 开发环境
|
||||
|
||||
1. **隔离环境**:不要在生产环境使用开发配置
|
||||
2. **定期更新**:保持开发环境与生产环境同步
|
||||
3. **清理数据**:定期清理开发环境数据
|
||||
|
||||
## 维护操作
|
||||
|
||||
### 备份
|
||||
|
||||
```bash
|
||||
# 备份数据库
|
||||
docker exec knowledge_base_mysql mysqldump -u root -p knowledge_base > backup.sql
|
||||
|
||||
# 备份文件
|
||||
tar -czf storage_backup.tar.gz storage/
|
||||
```
|
||||
|
||||
### 更新
|
||||
|
||||
```bash
|
||||
# 更新镜像
|
||||
docker-compose pull
|
||||
|
||||
# 重启服务
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 监控
|
||||
|
||||
```bash
|
||||
# 查看资源使用情况
|
||||
docker stats
|
||||
|
||||
# 查看服务健康状态
|
||||
docker-compose ps
|
||||
```
|
||||
Reference in New Issue
Block a user