xianyu-auto-reply/test_docker_deployment.sh
2025-07-25 17:24:29 +08:00

193 lines
5.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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}"