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

3.5 KiB
Raw Blame History

数据持久化和目录映射配置说明

概述

本文档描述了Docker部署中的数据持久化和目录映射配置确保容器重启后数据不丢失。

目录映射配置

1. 项目代码目录映射

volumes:
  - ./:/var/www/html
  • 用途: 将项目根目录映射到容器内的Web根目录
  • 好处: 支持开发环境的代码热重载
  • 注意: 生产环境建议使用镜像内置代码

2. 应用存储目录持久化

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. 数据库数据持久化

volumes:
  - mysql_data:/var/lib/mysql
  • 用途: MySQL数据库文件持久化
  • 映射到: ./storage/mysql
  • 重要性: 确保数据库数据在容器重启后不丢失

4. 缓存数据持久化

volumes:
  - redis_data:/data
  • 用途: Redis缓存和会话数据持久化
  • 映射到: ./storage/redis
  • 好处: 保持用户会话和缓存数据

5. 搜索引擎数据持久化

volumes:
  - meilisearch_data:/meili_data
  • 用途: Meilisearch搜索索引数据持久化
  • 映射到: ./storage/meilisearch
  • 重要性: 避免重新构建搜索索引

6. 日志目录映射

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 脚本初始化存储目录:

./docker/init-storage.sh

该脚本会:

  1. 创建所有必要的存储目录
  2. 设置正确的权限
  3. 显示目录结构

备份建议

定期备份以下重要目录:

  • storage/mysql/ - 数据库数据
  • storage/app/private/documents/ - 上传的文档
  • storage/meilisearch/ - 搜索索引
  • storage/logs/ - 应用日志

故障排除

权限问题

如果遇到权限错误,运行:

sudo chown -R $USER:$USER storage/
chmod -R 755 storage/

目录不存在

运行初始化脚本:

./docker/init-storage.sh

数据丢失

检查卷映射配置是否正确确保使用bind mount而不是匿名卷。