- 添加 Dockerfile 与多套 docker-compose 配置(开发/生产环境) - 集成 Laravel Octane (Swoole) 提升性能 - 新增健康检查、监控脚本及部署文档 - 新增 Docker 镜像离线导入包(MySQL/Redis/Meilisearch) - 优化文档转换、预览服务及队列任务 - 添加 CreateAdminUser 命令与路由健康检查接口 - 新增 Swoole 队列兼容性测试套件 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
116 lines
3.0 KiB
Bash
Executable File
116 lines
3.0 KiB
Bash
Executable File
#!/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 "" |