mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 20:47:35 +08:00
193 lines
5.5 KiB
Bash
193 lines
5.5 KiB
Bash
#!/bin/bash
|
||
|
||
# Docker多用户系统部署测试脚本
|
||
|
||
echo "🚀 Docker多用户系统部署测试"
|
||
echo "=================================="
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 检查Docker和Docker Compose
|
||
echo -e "${BLUE}1. 检查Docker环境${NC}"
|
||
if ! command -v docker &> /dev/null; then
|
||
echo -e "${RED}❌ Docker未安装${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
if ! command -v docker-compose &> /dev/null; then
|
||
echo -e "${RED}❌ Docker Compose未安装${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "${GREEN}✅ Docker环境检查通过${NC}"
|
||
echo " Docker版本: $(docker --version)"
|
||
echo " Docker Compose版本: $(docker-compose --version)"
|
||
|
||
# 检查必要文件
|
||
echo -e "\n${BLUE}2. 检查部署文件${NC}"
|
||
required_files=("Dockerfile" "docker-compose.yml" "requirements.txt")
|
||
|
||
for file in "${required_files[@]}"; do
|
||
if [ -f "$file" ]; then
|
||
echo -e "${GREEN}✅ $file${NC}"
|
||
else
|
||
echo -e "${RED}❌ $file 不存在${NC}"
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
# 检查新增依赖
|
||
echo -e "\n${BLUE}3. 检查新增依赖${NC}"
|
||
if grep -q "Pillow" requirements.txt; then
|
||
echo -e "${GREEN}✅ Pillow依赖已添加${NC}"
|
||
else
|
||
echo -e "${RED}❌ Pillow依赖缺失${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 停止现有容器
|
||
echo -e "\n${BLUE}4. 停止现有容器${NC}"
|
||
docker-compose down
|
||
echo -e "${GREEN}✅ 容器已停止${NC}"
|
||
|
||
# 构建镜像
|
||
echo -e "\n${BLUE}5. 构建Docker镜像${NC}"
|
||
echo "这可能需要几分钟时间..."
|
||
if docker-compose build --no-cache; then
|
||
echo -e "${GREEN}✅ 镜像构建成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 镜像构建失败${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 启动服务
|
||
echo -e "\n${BLUE}6. 启动服务${NC}"
|
||
if docker-compose up -d; then
|
||
echo -e "${GREEN}✅ 服务启动成功${NC}"
|
||
else
|
||
echo -e "${RED}❌ 服务启动失败${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 等待服务就绪
|
||
echo -e "\n${BLUE}7. 等待服务就绪${NC}"
|
||
echo "等待30秒让服务完全启动..."
|
||
sleep 30
|
||
|
||
# 检查容器状态
|
||
echo -e "\n${BLUE}8. 检查容器状态${NC}"
|
||
if docker-compose ps | grep -q "Up"; then
|
||
echo -e "${GREEN}✅ 容器运行正常${NC}"
|
||
docker-compose ps
|
||
else
|
||
echo -e "${RED}❌ 容器运行异常${NC}"
|
||
docker-compose ps
|
||
echo -e "\n${YELLOW}查看日志:${NC}"
|
||
docker-compose logs --tail=20
|
||
exit 1
|
||
fi
|
||
|
||
# 健康检查
|
||
echo -e "\n${BLUE}9. 健康检查${NC}"
|
||
max_attempts=10
|
||
attempt=1
|
||
|
||
while [ $attempt -le $max_attempts ]; do
|
||
if curl -s http://localhost:8080/health > /dev/null; then
|
||
echo -e "${GREEN}✅ 健康检查通过${NC}"
|
||
break
|
||
else
|
||
echo -e "${YELLOW}⏳ 尝试 $attempt/$max_attempts - 等待服务响应...${NC}"
|
||
sleep 3
|
||
((attempt++))
|
||
fi
|
||
done
|
||
|
||
if [ $attempt -gt $max_attempts ]; then
|
||
echo -e "${RED}❌ 健康检查失败${NC}"
|
||
echo -e "\n${YELLOW}查看日志:${NC}"
|
||
docker-compose logs --tail=20
|
||
exit 1
|
||
fi
|
||
|
||
# 测试图形验证码API
|
||
echo -e "\n${BLUE}10. 测试图形验证码功能${NC}"
|
||
response=$(curl -s -X POST http://localhost:8080/generate-captcha \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"session_id": "test_session"}')
|
||
|
||
if echo "$response" | grep -q '"success":true'; then
|
||
echo -e "${GREEN}✅ 图形验证码API正常${NC}"
|
||
else
|
||
echo -e "${RED}❌ 图形验证码API异常${NC}"
|
||
echo "响应: $response"
|
||
fi
|
||
|
||
# 测试注册页面
|
||
echo -e "\n${BLUE}11. 测试注册页面${NC}"
|
||
if curl -s http://localhost:8080/register.html | grep -q "用户注册"; then
|
||
echo -e "${GREEN}✅ 注册页面可访问${NC}"
|
||
else
|
||
echo -e "${RED}❌ 注册页面访问失败${NC}"
|
||
fi
|
||
|
||
# 测试登录页面
|
||
echo -e "\n${BLUE}12. 测试登录页面${NC}"
|
||
if curl -s http://localhost:8080/login.html | grep -q "登录"; then
|
||
echo -e "${GREEN}✅ 登录页面可访问${NC}"
|
||
else
|
||
echo -e "${RED}❌ 登录页面访问失败${NC}"
|
||
fi
|
||
|
||
# 检查Pillow安装
|
||
echo -e "\n${BLUE}13. 检查Pillow安装${NC}"
|
||
if docker-compose exec -T xianyu-app python -c "from PIL import Image; print('Pillow OK')" 2>/dev/null | grep -q "Pillow OK"; then
|
||
echo -e "${GREEN}✅ Pillow安装正常${NC}"
|
||
else
|
||
echo -e "${RED}❌ Pillow安装异常${NC}"
|
||
fi
|
||
|
||
# 检查字体支持
|
||
echo -e "\n${BLUE}14. 检查字体支持${NC}"
|
||
if docker-compose exec -T xianyu-app ls /usr/share/fonts/ 2>/dev/null | grep -q "dejavu"; then
|
||
echo -e "${GREEN}✅ 字体支持正常${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ 字体支持可能有问题${NC}"
|
||
fi
|
||
|
||
# 显示访问信息
|
||
echo -e "\n${GREEN}🎉 Docker部署测试完成!${NC}"
|
||
echo "=================================="
|
||
echo -e "${BLUE}访问信息:${NC}"
|
||
echo "• 主页: http://localhost:8080"
|
||
echo "• 登录页面: http://localhost:8080/login.html"
|
||
echo "• 注册页面: http://localhost:8080/register.html"
|
||
echo "• 健康检查: http://localhost:8080/health"
|
||
echo ""
|
||
echo -e "${BLUE}默认管理员账号:${NC}"
|
||
echo "• 用户名: admin"
|
||
echo "• 密码: admin123"
|
||
echo ""
|
||
echo -e "${BLUE}多用户功能:${NC}"
|
||
echo "• ✅ 用户注册"
|
||
echo "• ✅ 图形验证码"
|
||
echo "• ✅ 邮箱验证"
|
||
echo "• ✅ 数据隔离"
|
||
echo ""
|
||
echo -e "${YELLOW}管理命令:${NC}"
|
||
echo "• 查看日志: docker-compose logs -f"
|
||
echo "• 停止服务: docker-compose down"
|
||
echo "• 重启服务: docker-compose restart"
|
||
echo "• 查看状态: docker-compose ps"
|
||
|
||
# 可选:显示资源使用情况
|
||
echo -e "\n${BLUE}资源使用情况:${NC}"
|
||
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | grep xianyu || echo "无法获取资源使用情况"
|
||
|
||
echo -e "\n${GREEN}部署测试完成!系统已就绪。${NC}"
|