Files
social-app/Makefile
T

181 lines
6.1 KiB
Makefile
Raw Normal View History

# ============================================
# Social App Monorepo - 统一命令入口
# ============================================
#
# 使用方式:
# make <command>
#
# 常用命令:
# make up 启动本地开发依赖
# make down 停止并移除容器
# make logs 查看依赖服务日志
# make ps 查看运行状态
# make clean 清理本地数据卷(警告:会丢失数据)
# make env 提示如何配置环境变量
# make api-dev 启动 FastAPI 后端服务
# make flutter-dev 启动 Flutter 移动应用
# make milvus-init 初始化 Milvus 向量数据库
.PHONY: help up down logs ps clean env api-dev flutter-dev milvus-init
# 默认目标:显示帮助
help:
@echo "Social App Monorepo - 可用命令:"
@echo ""
@echo " 依赖服务管理:"
@echo " make up 启动本地开发依赖(Redis、Milvus、Postgres"
@echo " make down 停止并移除所有容器"
@echo " make logs 查看依赖服务日志(可用 SERVICE=redis 等指定)"
@echo " make ps 查看容器运行状态"
@echo " make clean 清理本地数据卷(警告:会丢失数据)"
@echo ""
@echo " 应用启动:"
@echo " make api-dev 启动 FastAPI 后端服务"
@echo " make flutter-dev 启动 Flutter 移动应用"
@echo ""
@echo " 配置与初始化:"
@echo " make env 显示如何配置环境变量"
@echo " make milvus-init 初始化 Milvus 向量数据库"
@echo ""
@echo " 示例:"
@echo " make logs SERVICE=redis"
@echo " make logs SERVICE=milvus"
# ============================================
# 依赖服务管理
# ============================================
# 启动本地开发依赖
up:
@echo "🚀 启动本地开发依赖..."
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env up -d
@echo ""
@echo "✅ 依赖服务已启动"
@echo ""
@echo "服务端口:"
@echo " - Redis: 6379"
@echo " - Milvus: 19530 (gRPC) / 19111 (HTTP)"
@echo " - Postgres: 54322"
@echo ""
@echo "检查状态:make ps"
@echo "查看日志:make logs"
# 停止并移除容器
down:
@echo "🛑 停止并移除容器..."
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env down
@echo "✅ 容器已停止并移除"
# 查看日志
logs:
ifndef SERVICE
@echo "📋 查看所有服务日志(Ctrl+C 退出)..."
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env logs -f
else
@echo "📋 查看 $(SERVICE) 服务日志(Ctrl+C 退出)..."
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env logs -f $(SERVICE)
endif
# 查看运行状态
ps:
@echo "📊 容器运行状态:"
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env ps
# 清理数据卷(警告:会丢失数据)
clean:
@echo "⚠️ 警告:此操作将删除所有本地数据(Redis、Milvus、Postgres"
@read -p "确认继续?[y/N] " confirm; \
if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \
docker compose -f infra/local/docker-compose.yml --env-file infra/local/env/.env down -v; \
echo "✅ 数据卷已清理"; \
else \
echo "❌ 操作已取消"; \
fi
# ============================================
# 配置管理
# ============================================
# 显示环境变量配置说明
env:
@echo "📝 环境变量配置说明:"
@echo ""
@echo "1. 查看配置规范:"
@echo " cat configs/env/.env.example"
@echo ""
@echo "2. 本地开发配置:"
@echo " mkdir -p infra/local/env"
@echo " cp configs/env/.env.example configs/env/.env"
@echo " cp infra/local/env/.env.example infra/local/env/.env"
@echo " # 编辑 configs/env/.env 与 infra/local/env/.env"
@echo ""
@echo "3. 确保以下变量已正确配置:"
@echo " - DATABASE_URL (连接到 localhost:54322)"
@echo " - REDIS_URL (连接到 localhost:6379)"
@echo " - MILVUS_URI (连接到 localhost:19530)"
@echo ""
@echo "4. 严禁将包含真实密钥的配置文件提交到 Git"
# ============================================
# 应用启动
# ============================================
# 启动 FastAPI 后端服务
api-dev:
@echo "🔧 启动 FastAPI 后端服务..."
@echo ""
@echo "前置条件:"
@echo " 1. 确保依赖服务已启动:make up"
@echo " 2. 确保环境变量已配置:make env"
@echo ""
@echo "启动命令(示例):"
@echo " cd apps/api"
@echo " uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload"
@echo ""
@echo "或使用 Python 虚拟环境:"
@echo " python -m venv .venv"
@echo " source .venv/bin/activate"
@echo " pip install -r requirements.txt"
@echo " uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload"
# 启动 Flutter 移动应用
flutter-dev:
@echo "📱 启动 Flutter 移动应用..."
@echo ""
@echo "前置条件:"
@echo " 1. 确保后端服务已启动:make api-dev"
@echo " 2. 确保 Flutter SDK 已安装"
@echo ""
@echo "启动命令(示例):"
@echo " cd apps/mobile"
@echo " flutter run --dart-define=PUBLIC_API_BASE_URL=http://localhost:8000"
@echo ""
@echo "或使用调试模式:"
@echo " flutter run --dart-define=PUBLIC_API_BASE_URL=http://localhost:8000 --debug"
@echo ""
@echo "构建版本:"
@echo " flutter build apk --dart-define=PUBLIC_API_BASE_URL=http://localhost:8000"
# ============================================
# 初始化脚本
# ============================================
# 初始化 Milvus 向量数据库
milvus-init:
@echo "🔧 初始化 Milvus 向量数据库..."
@echo ""
@echo "前置条件:"
@echo " 1. 确保依赖服务已启动:make up"
@echo " 2. 确保 Milvus 服务已健康(检查:make ps"
@echo ""
@echo "初始化脚本:"
@echo " bash tools/scripts/init_milvus.sh"
@echo ""
@echo "如脚本不存在,请创建:"
@echo " mkdir -p tools/scripts"
@echo " cat > tools/scripts/init_milvus.sh << 'EOF'"
@echo "#!/bin/bash"
@echo "# Milvus 初始化脚本"
@echo "# TODO: 创建集合、索引等"
@echo "EOF"