269 lines
5.3 KiB
Markdown
269 lines
5.3 KiB
Markdown
# Presence Service 脚本说明
|
||
|
||
## 脚本列表
|
||
|
||
| 脚本 | 用途 | 使用场景 |
|
||
|-----|------|---------|
|
||
| `start-all.sh` | 一键启动所有服务 | 开发环境初始化 |
|
||
| `stop-service.sh` | 停止 Presence Service | 重启服务、关闭开发环境 |
|
||
| `health-check.sh` | 检查所有服务健康状态 | 部署验证、故障排查 |
|
||
| `quick-test.sh` | 快速 API 功能测试 | 验证核心功能 |
|
||
| `rebuild-kafka.sh` | 重建 Kafka 容器 | Kafka 配置变更后 |
|
||
|
||
另外,项目根目录还有:
|
||
|
||
| 脚本 | 用途 | 使用场景 |
|
||
|-----|------|---------|
|
||
| `deploy.sh` | 完整部署管理脚本 | 生产部署、容器管理 |
|
||
|
||
---
|
||
|
||
## 快速开始
|
||
|
||
### 1️⃣ 一键启动(推荐)
|
||
|
||
```bash
|
||
./scripts/start-all.sh
|
||
```
|
||
|
||
这个脚本会:
|
||
1. ✅ 启动 Docker 容器 (PostgreSQL, Redis, Kafka)
|
||
2. ✅ 等待所有基础设施就绪
|
||
3. ✅ 初始化数据库 (Prisma)
|
||
4. ✅ 启动 Presence Service
|
||
5. ✅ 验证服务可用
|
||
|
||
### 2️⃣ 健康检查
|
||
|
||
```bash
|
||
./scripts/health-check.sh
|
||
```
|
||
|
||
**期望输出:**
|
||
```
|
||
🏥 Starting health check...
|
||
|
||
=== Database Service ===
|
||
Checking PostgreSQL ... ✓ OK
|
||
=== Cache Service ===
|
||
Checking Redis ... ✓ OK
|
||
=== Message Queue Service ===
|
||
Checking Kafka ... ✓ OK
|
||
=== Application Service ===
|
||
Checking Presence Service ... ✓ OK
|
||
|
||
======================================
|
||
Health Check Complete!
|
||
Passed: 4
|
||
Failed: 0
|
||
======================================
|
||
✓ All services are healthy!
|
||
```
|
||
|
||
### 3️⃣ 快速测试
|
||
|
||
```bash
|
||
./scripts/quick-test.sh
|
||
```
|
||
|
||
验证核心 API 功能是否正常工作。
|
||
|
||
### 4️⃣ 停止服务
|
||
|
||
```bash
|
||
./scripts/stop-service.sh
|
||
```
|
||
|
||
---
|
||
|
||
## deploy.sh 使用指南
|
||
|
||
`deploy.sh` 是一个功能完整的部署管理脚本,支持以下命令:
|
||
|
||
```bash
|
||
# 构建 Docker 镜像
|
||
./deploy.sh build
|
||
./deploy.sh build-no-cache
|
||
|
||
# 启动/停止服务
|
||
./deploy.sh start # 启动完整环境
|
||
./deploy.sh start-deps # 只启动依赖(开发模式)
|
||
./deploy.sh stop # 停止所有
|
||
./deploy.sh restart # 重启
|
||
|
||
# 监控
|
||
./deploy.sh logs # 实时日志
|
||
./deploy.sh logs-tail # 最近 100 行日志
|
||
./deploy.sh status # 服务状态
|
||
./deploy.sh health # 健康检查
|
||
|
||
# 数据库
|
||
./deploy.sh migrate # 生产环境迁移
|
||
./deploy.sh migrate-dev # 开发环境迁移
|
||
./deploy.sh db-push # 推送 Schema
|
||
./deploy.sh prisma-studio # 打开 Prisma Studio
|
||
|
||
# 开发
|
||
./deploy.sh shell # 进入容器 Shell
|
||
./deploy.sh test # 运行所有测试
|
||
./deploy.sh test-unit # 单元测试
|
||
./deploy.sh test-integration # 集成测试
|
||
./deploy.sh test-e2e # E2E 测试
|
||
|
||
# 清理
|
||
./deploy.sh clean # 删除容器和镜像
|
||
```
|
||
|
||
---
|
||
|
||
## 服务端口
|
||
|
||
| 服务 | 开发端口 | 说明 |
|
||
|-----|---------|------|
|
||
| Presence Service | 3011 | NestJS 应用 |
|
||
| PostgreSQL | 5432 | 数据库 |
|
||
| Redis | 6379 | 缓存 |
|
||
| Kafka | 9092 | 消息队列 |
|
||
| Zookeeper | 2181 | Kafka 协调 |
|
||
|
||
---
|
||
|
||
## 手动操作
|
||
|
||
### 只启动基础设施
|
||
|
||
```bash
|
||
docker compose -f docker-compose.dev.yml up -d
|
||
```
|
||
|
||
### 只启动应用
|
||
|
||
```bash
|
||
npm run start:dev
|
||
```
|
||
|
||
### 停止所有容器
|
||
|
||
```bash
|
||
docker compose -f docker-compose.dev.yml down
|
||
```
|
||
|
||
### 清理数据
|
||
|
||
```bash
|
||
# 停止容器并删除数据卷
|
||
docker compose -f docker-compose.dev.yml down -v
|
||
```
|
||
|
||
---
|
||
|
||
## 故障排查
|
||
|
||
### PostgreSQL 连接失败
|
||
|
||
```bash
|
||
# 检查容器状态
|
||
docker ps -a | grep presence-postgres
|
||
|
||
# 查看日志
|
||
docker logs presence-postgres-dev
|
||
|
||
# 重启容器
|
||
docker compose -f docker-compose.dev.yml restart postgres
|
||
```
|
||
|
||
### Redis 连接失败
|
||
|
||
```bash
|
||
# 检查容器状态
|
||
docker ps -a | grep presence-redis
|
||
|
||
# 测试连接
|
||
docker exec presence-redis-dev redis-cli ping
|
||
|
||
# 重启容器
|
||
docker compose -f docker-compose.dev.yml restart redis
|
||
```
|
||
|
||
### Kafka 连接失败
|
||
|
||
```bash
|
||
# Kafka 启动较慢,等待 30-60 秒
|
||
docker logs presence-kafka-dev
|
||
|
||
# 检查 Zookeeper
|
||
docker exec presence-zookeeper-dev nc -z localhost 2181
|
||
|
||
# 重启 Kafka 和 Zookeeper
|
||
docker compose -f docker-compose.dev.yml restart zookeeper kafka
|
||
```
|
||
|
||
### 端口冲突
|
||
|
||
```bash
|
||
# 查找占用端口的进程
|
||
lsof -i :3011
|
||
lsof -i :5432
|
||
lsof -i :6379
|
||
lsof -i :9092
|
||
|
||
# 停止冲突进程
|
||
kill <PID>
|
||
```
|
||
|
||
---
|
||
|
||
## Windows 用户
|
||
|
||
这些脚本是 Bash 脚本,在 Windows 上需要:
|
||
|
||
1. **Git Bash** (推荐)
|
||
2. **WSL (Windows Subsystem for Linux)**
|
||
3. **Docker Desktop** (已包含 Linux 环境)
|
||
|
||
```powershell
|
||
# 使用 Git Bash 运行
|
||
bash ./scripts/start-all.sh
|
||
|
||
# 或者直接使用 npm 命令
|
||
npm run start:dev
|
||
```
|
||
|
||
---
|
||
|
||
## 完整开发流程
|
||
|
||
```bash
|
||
# 1. 克隆项目
|
||
git clone <repository-url>
|
||
cd backend/services/presence-service
|
||
|
||
# 2. 安装依赖
|
||
npm install
|
||
|
||
# 3. 复制环境配置
|
||
cp .env.example .env.development
|
||
|
||
# 4. 启动所有服务
|
||
./scripts/start-all.sh
|
||
|
||
# 5. 运行健康检查
|
||
./scripts/health-check.sh
|
||
|
||
# 6. 运行测试
|
||
npm test
|
||
npm run test:e2e
|
||
|
||
# 7. 开发完成后停止
|
||
./scripts/stop-service.sh
|
||
docker compose -f docker-compose.dev.yml down
|
||
```
|
||
|
||
---
|
||
|
||
## 相关文档
|
||
|
||
- [开发指南](../docs/DEVELOPMENT.md)
|
||
- [测试指南](../docs/TESTING.md)
|
||
- [部署指南](../docs/DEPLOYMENT.md)
|