Files
KnowledgeBase/docker/STORAGE_CONFIGURATION.md
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

135 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据持久化和目录映射配置说明
## 概述
本文档描述了Docker部署中的数据持久化和目录映射配置确保容器重启后数据不丢失。
## 目录映射配置
### 1. 项目代码目录映射
```yaml
volumes:
- ./:/var/www/html
```
- **用途**: 将项目根目录映射到容器内的Web根目录
- **好处**: 支持开发环境的代码热重载
- **注意**: 生产环境建议使用镜像内置代码
### 2. 应用存储目录持久化
```yaml
volumes:
- storage_data:/var/www/html/storage
- documents_data:/var/www/html/storage/app/private/documents
- public_data:/var/www/html/storage/app/public
```
- **storage_data**: Laravel应用的主存储目录
- **documents_data**: 上传文档的私有存储目录
- **public_data**: 公共文件存储目录
### 3. 数据库数据持久化
```yaml
volumes:
- mysql_data:/var/lib/mysql
```
- **用途**: MySQL数据库文件持久化
- **映射到**: `./storage/mysql`
- **重要性**: 确保数据库数据在容器重启后不丢失
### 4. 缓存数据持久化
```yaml
volumes:
- redis_data:/data
```
- **用途**: Redis缓存和会话数据持久化
- **映射到**: `./storage/redis`
- **好处**: 保持用户会话和缓存数据
### 5. 搜索引擎数据持久化
```yaml
volumes:
- meilisearch_data:/meili_data
```
- **用途**: Meilisearch搜索索引数据持久化
- **映射到**: `./storage/meilisearch`
- **重要性**: 避免重新构建搜索索引
### 6. 日志目录映射
```yaml
volumes:
- app_logs:/var/log
- queue_logs:/var/log
- laravel_logs:/var/www/html/storage/logs
```
- **app_logs**: 应用容器系统日志
- **queue_logs**: 队列容器系统日志
- **laravel_logs**: Laravel应用日志
- **映射到**: `./storage/logs/` 相应子目录
## 存储目录结构
```
storage/
├── app/ # Laravel应用存储
│ ├── private/
│ │ ├── documents/ # 上传文档存储
│ │ └── markdown/ # Markdown文件存储
│ └── public/ # 公共文件存储
├── framework/ # Laravel框架缓存
│ ├── cache/
│ ├── sessions/
│ ├── testing/
│ └── views/
├── logs/ # 日志文件
│ ├── app/ # 应用容器日志
│ ├── queue/ # 队列容器日志
│ └── laravel.log # Laravel应用日志
├── mysql/ # MySQL数据文件
├── redis/ # Redis数据文件
└── meilisearch/ # Meilisearch索引文件
```
## 权限配置
所有存储目录都设置为755权限确保
- 容器内的应用可以读写数据
- 宿主机可以访问和备份数据
- 安全性和可用性的平衡
## 初始化脚本
使用 `docker/init-storage.sh` 脚本初始化存储目录:
```bash
./docker/init-storage.sh
```
该脚本会:
1. 创建所有必要的存储目录
2. 设置正确的权限
3. 显示目录结构
## 备份建议
定期备份以下重要目录:
- `storage/mysql/` - 数据库数据
- `storage/app/private/documents/` - 上传的文档
- `storage/meilisearch/` - 搜索索引
- `storage/logs/` - 应用日志
## 故障排除
### 权限问题
如果遇到权限错误,运行:
```bash
sudo chown -R $USER:$USER storage/
chmod -R 755 storage/
```
### 目录不存在
运行初始化脚本:
```bash
./docker/init-storage.sh
```
### 数据丢失
检查卷映射配置是否正确确保使用bind mount而不是匿名卷。