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:
116
docker/start-production.sh
Executable file
116
docker/start-production.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Laravel知识库系统 - 生产环境启动脚本
|
||||
|
||||
set -e
|
||||
|
||||
echo "🚀 启动Laravel知识库系统生产环境..."
|
||||
|
||||
# 检查必要文件
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "❌ 错误: .env文件不存在"
|
||||
echo "请复制.env.production为.env并配置相应参数"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "docker-compose.yml" ]; then
|
||||
echo "❌ 错误: docker-compose.yml文件不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建必要的目录
|
||||
echo "📁 创建存储目录..."
|
||||
mkdir -p storage/mysql
|
||||
mkdir -p storage/redis
|
||||
mkdir -p storage/meilisearch
|
||||
mkdir -p storage/logs/app
|
||||
mkdir -p storage/logs/queue
|
||||
mkdir -p storage/app/public
|
||||
mkdir -p storage/app/documents
|
||||
mkdir -p storage/app/markdown
|
||||
|
||||
# 设置目录权限
|
||||
echo "🔐 设置目录权限..."
|
||||
chmod -R 755 storage/
|
||||
chmod -R 755 bootstrap/cache/
|
||||
|
||||
# 构建应用镜像
|
||||
echo "🏗️ 构建Docker镜像..."
|
||||
docker-compose build --no-cache app
|
||||
|
||||
# 启动服务
|
||||
echo "🔄 启动服务..."
|
||||
docker-compose up -d
|
||||
|
||||
# 等待服务启动
|
||||
echo "⏳ 等待服务启动..."
|
||||
sleep 30
|
||||
|
||||
# 检查服务状态
|
||||
echo "🔍 检查服务状态..."
|
||||
docker-compose ps
|
||||
|
||||
# 运行Laravel初始化命令
|
||||
echo "🔧 运行Laravel初始化..."
|
||||
docker-compose exec app php artisan key:generate --force
|
||||
docker-compose exec app php artisan migrate --force
|
||||
docker-compose exec app php artisan config:cache
|
||||
docker-compose exec app php artisan route:cache
|
||||
docker-compose exec app php artisan view:cache
|
||||
docker-compose exec app php artisan storage:link
|
||||
|
||||
# 设置文件权限
|
||||
echo "📝 设置应用权限..."
|
||||
docker-compose exec app chown -R www-data:www-data /var/www/html/storage
|
||||
docker-compose exec app chown -R www-data:www-data /var/www/html/bootstrap/cache
|
||||
|
||||
# 健康检查
|
||||
echo "🏥 执行健康检查..."
|
||||
sleep 10
|
||||
|
||||
# 检查Web应用 (Swoole)
|
||||
if curl -f http://localhost:8000/health > /dev/null 2>&1; then
|
||||
echo "✅ Web应用健康检查通过"
|
||||
else
|
||||
# 如果没有专门的健康检查路由,尝试访问根路径
|
||||
if curl -f http://localhost:8000/ > /dev/null 2>&1; then
|
||||
echo "✅ Web应用健康检查通过"
|
||||
else
|
||||
echo "❌ Web应用健康检查失败"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 检查MySQL
|
||||
if docker-compose exec mysql mysqladmin ping -h localhost --silent; then
|
||||
echo "✅ MySQL健康检查通过"
|
||||
else
|
||||
echo "❌ MySQL健康检查失败"
|
||||
fi
|
||||
|
||||
# 检查Redis
|
||||
if docker-compose exec redis redis-cli ping > /dev/null 2>&1; then
|
||||
echo "✅ Redis健康检查通过"
|
||||
else
|
||||
echo "❌ Redis健康检查失败"
|
||||
fi
|
||||
|
||||
# 检查Meilisearch
|
||||
if curl -f http://localhost:7700/health > /dev/null 2>&1; then
|
||||
echo "✅ Meilisearch健康检查通过"
|
||||
else
|
||||
echo "❌ Meilisearch健康检查失败"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🎉 生产环境启动完成!"
|
||||
echo ""
|
||||
echo "📊 服务访问地址:"
|
||||
echo " Web应用: http://localhost:8000"
|
||||
echo " Meilisearch: http://localhost:7700"
|
||||
echo ""
|
||||
echo "🔧 管理命令:"
|
||||
echo " 查看日志: docker-compose logs -f"
|
||||
echo " 停止服务: docker-compose down"
|
||||
echo " 重启服务: docker-compose restart"
|
||||
echo " 查看状态: docker-compose ps"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user