# 聊天应用 Makefile .PHONY: help install start stop restart logs clean dev deploy health backup restore build single test # 默认目标 help: @echo "聊天应用管理命令:" @echo "" @echo "🚀 部署命令:" @echo " make install - 安装依赖和设置权限" @echo " make start - 启动生产环境(多容器)" @echo " make single - 启动单容器版本" @echo " make dev - 启动开发环境" @echo " make deploy - 部署到生产环境" @echo "" @echo "🔧 管理命令:" @echo " make stop - 停止所有服务" @echo " make restart - 重启所有服务" @echo " make logs - 查看服务日志" @echo " make health - 检查服务健康状态" @echo " make test - 运行功能测试" @echo "" @echo "🐳 Docker命令:" @echo " make build - 构建Docker镜像" @echo " make clean - 清理Docker资源" @echo "" @echo "💾 数据命令:" @echo " make backup - 备份数据库" @echo " make restore - 恢复数据库" @echo "" # 安装和设置 install: @echo "🔧 设置脚本权限..." chmod +x *.sh @echo "✅ 安装完成" # 启动生产环境 start: @echo "🚀 启动生产环境..." ./start.sh # 启动开发环境 dev: @echo "🚀 启动开发环境..." ./start-dev.sh # 启动单容器版本 single: @echo "🚀 启动单容器版本..." @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose -f docker-compose.single.yml up --build -d; \ else \ docker compose -f docker-compose.single.yml up --build -d; \ fi @echo "✅ 单容器版本启动完成" @echo "🌐 访问地址: http://localhost" # 构建Docker镜像 build: @echo "🐳 构建Docker镜像..." @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose build --no-cache; \ else \ docker compose build --no-cache; \ fi @echo "✅ 镜像构建完成" # 运行测试 test: @echo "🧪 运行功能测试..." ./test.sh # 停止服务 stop: @echo "🛑 停止服务..." ./stop.sh # 重启服务 restart: stop start # 查看日志 logs: @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose logs -f; \ else \ docker compose logs -f; \ fi # 检查健康状态 health: @echo "🔍 检查服务状态..." @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose ps; \ else \ docker compose ps; \ fi @echo "" @echo "🧪 测试服务连接..." @curl -f http://localhost:5000/api/health 2>/dev/null && echo "✅ 后端服务正常" || echo "❌ 后端服务异常" @curl -f http://localhost:3000 2>/dev/null && echo "✅ 前端服务正常" || echo "❌ 前端服务异常" # 清理Docker资源 clean: @echo "🧹 清理Docker资源..." @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose down -v --rmi all --remove-orphans; \ else \ docker compose down -v --rmi all --remove-orphans; \ fi docker system prune -f @echo "✅ 清理完成" # 部署到生产环境 deploy: @echo "🚀 部署到生产环境..." ./deploy.sh # 备份数据库 backup: @echo "💾 备份数据库..." @mkdir -p backups @BACKUP_FILE="backups/chatapp-backup-$$(date +%Y%m%d-%H%M%S).gz"; \ docker exec chat-mongo mongodump --authenticationDatabase admin -u admin -p password123 --db chatapp --gzip --archive=$$BACKUP_FILE; \ echo "✅ 数据库已备份到: $$BACKUP_FILE" # 恢复数据库 restore: @echo "📥 恢复数据库..." @if [ -z "$(FILE)" ]; then \ echo "❌ 请指定备份文件: make restore FILE=backups/backup-file.gz"; \ exit 1; \ fi @if [ ! -f "$(FILE)" ]; then \ echo "❌ 备份文件不存在: $(FILE)"; \ exit 1; \ fi docker exec chat-mongo mongorestore --authenticationDatabase admin -u admin -p password123 --db chatapp --gzip --archive=$(FILE) --drop @echo "✅ 数据库恢复完成" # 更新应用 update: @echo "🔄 更新应用..." git pull @if command -v docker-compose >/dev/null 2>&1; then \ docker-compose pull; \ docker-compose up --build -d; \ else \ docker compose pull; \ docker compose up --build -d; \ fi @echo "✅ 更新完成"