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:
97
docker/test-persistence.sh
Executable file
97
docker/test-persistence.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 数据持久化测试脚本
|
||||
# 验证所有数据卷映射是否正确配置
|
||||
|
||||
set -e
|
||||
|
||||
echo "开始测试数据持久化配置..."
|
||||
|
||||
# 检查存储目录是否存在
|
||||
check_directory() {
|
||||
local dir=$1
|
||||
local description=$2
|
||||
|
||||
if [ -d "$dir" ]; then
|
||||
echo "✓ $description 目录存在: $dir"
|
||||
return 0
|
||||
else
|
||||
echo "✗ $description 目录不存在: $dir"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查docker-compose配置中的卷映射
|
||||
check_volume_mapping() {
|
||||
local volume_name=$1
|
||||
local description=$2
|
||||
|
||||
if docker-compose config | grep -q "$volume_name"; then
|
||||
echo "✓ $description 卷映射已配置: $volume_name"
|
||||
return 0
|
||||
else
|
||||
echo "✗ $description 卷映射未配置: $volume_name"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "检查存储目录结构..."
|
||||
|
||||
# 检查所有必要的存储目录
|
||||
check_directory "storage/mysql" "MySQL数据库存储"
|
||||
check_directory "storage/redis" "Redis缓存存储"
|
||||
check_directory "storage/meilisearch" "Meilisearch搜索存储"
|
||||
check_directory "storage/app" "Laravel应用存储"
|
||||
check_directory "storage/app/private/documents" "文档上传存储"
|
||||
check_directory "storage/app/public" "公共文件存储"
|
||||
check_directory "storage/logs" "日志存储"
|
||||
check_directory "storage/logs/app" "应用日志存储"
|
||||
check_directory "storage/logs/queue" "队列日志存储"
|
||||
|
||||
echo ""
|
||||
echo "检查Docker Compose卷映射配置..."
|
||||
|
||||
# 检查所有卷映射配置
|
||||
check_volume_mapping "mysql_data" "MySQL数据"
|
||||
check_volume_mapping "redis_data" "Redis数据"
|
||||
check_volume_mapping "meilisearch_data" "Meilisearch数据"
|
||||
check_volume_mapping "storage_data" "应用存储数据"
|
||||
check_volume_mapping "documents_data" "文档存储数据"
|
||||
check_volume_mapping "public_data" "公共文件数据"
|
||||
check_volume_mapping "app_logs" "应用日志"
|
||||
check_volume_mapping "queue_logs" "队列日志"
|
||||
check_volume_mapping "laravel_logs" "Laravel日志"
|
||||
|
||||
echo ""
|
||||
echo "检查目录权限..."
|
||||
|
||||
# 检查关键目录的权限
|
||||
for dir in storage/mysql storage/redis storage/meilisearch storage/app storage/logs; do
|
||||
if [ -d "$dir" ]; then
|
||||
perms=$(stat -f "%A" "$dir" 2>/dev/null || stat -c "%a" "$dir" 2>/dev/null || echo "unknown")
|
||||
echo "✓ $dir 权限: $perms"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "数据持久化配置测试完成!"
|
||||
|
||||
# 创建测试文件验证映射
|
||||
echo ""
|
||||
echo "创建测试文件验证目录映射..."
|
||||
|
||||
test_file="storage/app/test-persistence-$(date +%s).txt"
|
||||
echo "测试数据持久化配置 - $(date)" > "$test_file"
|
||||
|
||||
if [ -f "$test_file" ]; then
|
||||
echo "✓ 测试文件创建成功: $test_file"
|
||||
rm "$test_file"
|
||||
echo "✓ 测试文件清理完成"
|
||||
else
|
||||
echo "✗ 测试文件创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "所有数据持久化配置检查通过!"
|
||||
Reference in New Issue
Block a user