# OCDP 命令速查表

快速查找常用的 Docker 和 Make 命令。

---

## 🚀 快速启动

```bash
# 开发环境（推荐，Mock 模式）
make docker-dev

# 生产环境（真实数据库）
make docker-prod

# 测试后端（独立）
make docker-test-backend

# 测试前端（独立）
make docker-test-frontend
```

---

## 📋 完整命令列表

### Docker 服务管理

| 命令 | 说明 | 模式 |
|------|------|------|
| `make docker-dev` | 启动开发环境（前台） | Dev |
| `make docker-dev-bg` | 启动开发环境（后台） | Dev |
| `make docker-prod` | 启动生产环境 | Production |
| `make docker-up` | 同 docker-prod | Production |
| `make docker-down` | 停止所有服务 | - |
| `make docker-down-v` | 停止并删除数据卷 | - |

### 服务测试

| 命令 | 说明 | 端口 |
|------|------|------|
| `make docker-test-backend` | 测试后端（前台） | 8080 |
| `make docker-test-backend-bg` | 测试后端（后台） | 8080 |
| `make docker-test-frontend` | 测试前端（前台） | 3000 |
| `make docker-test-frontend-bg` | 测试前端（后台） | 3000 |

### 日志查看

| 命令 | 说明 |
|------|------|
| `make docker-logs` | 查看所有服务日志 |
| `make docker-logs-backend` | 只看后端日志 |
| `make docker-logs-frontend` | 只看前端日志 |
| `make docker-logs-db` | 只看数据库日志 |

### 服务状态

| 命令 | 说明 |
|------|------|
| `make docker-ps` | 查看服务状态 |
| `make docker-status` | 查看详细状态（含健康检查） |

### 镜像管理

| 命令 | 说明 |
|------|------|
| `make docker-build` | 构建所有镜像 |
| `make docker-build-no-cache` | 无缓存构建 |
| `make docker-restart` | 重启所有服务 |
| `make docker-restart-backend` | 只重启后端 |
| `make docker-restart-frontend` | 只重启前端 |

### 工具服务

| 命令 | 说明 | 端口 |
|------|------|------|
| `make docker-tools` | 启动 pgAdmin + Swagger UI | 5050, 8081 |

---

## 🔧 原始 Docker Compose 命令

### 开发模式

```bash
# 启动（前台）
docker compose -f docker-compose.yml -f docker-compose.dev.yml up

# 启动（后台）
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d

# 停止
docker compose -f docker-compose.yml -f docker-compose.dev.yml down

# 查看日志
docker compose -f docker-compose.yml -f docker-compose.dev.yml logs -f

# 重启服务
docker compose -f docker-compose.yml -f docker-compose.dev.yml restart backend
```

### 生产模式

```bash
# 启动（前台）
docker compose up

# 启动（后台）
docker compose up -d

# 停止
docker compose down

# 查看日志
docker compose logs -f

# 重启服务
docker compose restart backend
```

### Mock 模式

```bash
# 测试后端
docker compose -f docker-compose.mock.yml up backend

# 测试前端
docker compose -f docker-compose.mock.yml up frontend

# 后台运行
docker compose -f docker-compose.mock.yml up -d backend

# 停止
docker compose -f docker-compose.mock.yml down
```

---

## 🛠️ 本地开发命令（不使用 Docker）

### 安装依赖

```bash
make install              # 安装所有依赖
make install-tools        # 安装 OpenAPI 工具
make install-deps         # 安装项目依赖
```

### 启动服务

```bash
make dev-local            # 启动完整环境
make dev-backend-mock     # 只启动后端（Mock）
make dev-backend-prod     # 只启动后端（生产）
make dev-frontend         # 只启动前端
```

### OpenAPI 工作流

```bash
make openapi-validate     # 验证 OpenAPI 规范
make openapi-gen          # 生成前后端代码
make openapi-gen-backend  # 只生成后端代码
make openapi-gen-frontend # 只生成前端代码
make openapi-docs         # 生成 HTML 文档
make openapi-view         # 启动文档服务器
```

### 测试

```bash
make test                 # 运行所有测试
make test-backend         # 运行后端测试
make test-frontend        # 运行前端测试
```

### 清理

```bash
make clean                # 清理构建产物
make clean-generated      # 清理生成的代码
```

---

## 📊 常用 Docker 命令

### 容器操作

```bash
# 进入容器
docker compose exec backend sh
docker compose exec frontend sh
docker compose exec postgres psql -U postgres -d ocdp

# 查看容器列表
docker compose ps

# 查看容器详情
docker compose ps -a

# 删除容器
docker compose rm backend
docker compose rm -f backend  # 强制删除

# 停止特定容器
docker compose stop backend
docker compose stop frontend
```

### 日志操作

```bash
# 实时日志
docker compose logs -f

# 只看特定服务
docker compose logs -f backend

# 显示最后 N 行
docker compose logs --tail=100 backend

# 显示时间戳
docker compose logs -f -t backend

# 不跟随（只显示现有）
docker compose logs backend
```

### 镜像操作

```bash
# 构建镜像
docker compose build

# 无缓存构建
docker compose build --no-cache

# 只构建特定服务
docker compose build backend
docker compose build frontend

# 查看镜像
docker images | grep ocdp

# 删除镜像
docker rmi ocdp-backend
docker rmi ocdp-frontend
```

### 数据卷操作

```bash
# 查看数据卷
docker volume ls

# 删除特定数据卷
docker volume rm ocdp_postgres_data
docker volume rm ocdp_redis_data

# 删除所有未使用的数据卷
docker volume prune

# 备份数据卷
docker run --rm -v ocdp_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/postgres_backup.tar.gz -C /data .

# 恢复数据卷
docker run --rm -v ocdp_postgres_data:/data -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/postgres_backup.tar.gz"
```

### 网络操作

```bash
# 查看网络
docker network ls

# 查看网络详情
docker network inspect ocdp-network

# 测试网络连通性
docker compose exec backend ping frontend
docker compose exec frontend ping backend
```

---

## 🔍 调试命令

### 健康检查

```bash
# 后端健康检查
curl http://localhost:8080/health

# 前端健康检查
curl http://localhost:5173/    # Dev 模式
curl http://localhost:3000/    # Production 模式

# 数据库健康检查
docker compose exec postgres pg_isready -U postgres
```

### API 测试

```bash
# 登录
curl -X POST http://localhost:8080/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 获取 Registries
curl http://localhost:8080/api/v1/registries

# 获取 Clusters
curl http://localhost:8080/api/v1/clusters

# 获取 Repositories
curl http://localhost:8080/api/v1/registries/harbor-prod/repositories

# 获取 Artifacts（带过滤）
curl "http://localhost:8080/api/v1/registries/harbor-prod/repositories/charts%2Fvllm-serve/artifacts?media_type=chart"
```

### 数据库操作

```bash
# 连接数据库
docker compose exec postgres psql -U postgres -d ocdp

# 查看表
docker compose exec postgres psql -U postgres -d ocdp -c "\dt"

# 查询数据
docker compose exec postgres psql -U postgres -d ocdp -c "SELECT * FROM registries;"

# 执行 SQL 文件
docker compose exec -T postgres psql -U postgres -d ocdp < schema.sql
```

### 性能监控

```bash
# 查看资源使用
docker stats

# 只看特定容器
docker stats ocdp-backend ocdp-frontend

# 查看容器进程
docker compose top backend
docker compose top frontend
```

---

## 🎯 常用组合命令

### 完全重置

```bash
# 停止并删除所有内容
docker compose down -v
docker compose -f docker-compose.dev.yml down -v
docker compose -f docker-compose.mock.yml down -v

# 删除镜像
docker rmi $(docker images | grep ocdp | awk '{print $3}')

# 重新构建
make docker-build

# 重新启动
make docker-dev
```

### 更新代码后重新部署

```bash
# 停止服务
make docker-down

# 拉取最新代码
git pull

# 重新构建
make docker-build

# 启动服务
make docker-dev
```

### 查看完整系统状态

```bash
# 查看所有容器
docker compose ps

# 查看所有日志
make docker-logs

# 查看健康状态
make docker-status

# 测试所有服务
curl http://localhost:8080/health
curl http://localhost:5173/
curl http://localhost:5432  # 数据库端口
```

---

## 📝 环境变量

### 后端环境变量

```bash
# Mock 模式
export ADAPTER_MODE=mock
export JWT_SECRET=dev-secret
export ENCRYPTION_KEY=dev-encryption-key-32-bytes-long

# Production 模式
export ADAPTER_MODE=production
export DATABASE_URL=postgresql://postgres:postgres@postgres:5432/ocdp?sslmode=disable
export JWT_SECRET=your-production-secret
export ENCRYPTION_KEY=your-production-encryption-key-32-bytes
```

### 前端环境变量

```bash
export VITE_API_BASE_URL=http://localhost:8080/api/v1
export VITE_USE_MOCK=false
```

---

## 🆘 故障排查命令

### 问题诊断

```bash
# 查看完整日志
docker compose logs --tail=1000 > debug.log

# 查看特定时间段日志
docker compose logs --since 10m backend

# 查看容器详细信息
docker compose exec backend env

# 检查配置
docker compose config

# 验证 docker-compose.yml
docker compose -f docker-compose.yml config
docker compose -f docker-compose.dev.yml config
```

### 端口冲突检查

```bash
# 查看端口占用
sudo lsof -i :8080
sudo lsof -i :5173
sudo lsof -i :3000
sudo lsof -i :5432

# 杀死进程
sudo kill -9 <PID>
```

### 磁盘空间清理

```bash
# 删除未使用的容器
docker container prune

# 删除未使用的镜像
docker image prune

# 删除未使用的数据卷
docker volume prune

# 删除所有未使用的资源
docker system prune -a --volumes
```

---

## 💡 实用技巧

### 1. 后台运行并查看日志

```bash
make docker-dev-bg && make docker-logs
```

### 2. 重启并查看日志

```bash
docker compose restart backend && docker compose logs -f backend
```

### 3. 构建并启动

```bash
make docker-build && make docker-dev
```

### 4. 清理并重新开始

```bash
make docker-down && docker system prune -f && make docker-dev
```

### 5. 快速测试 API

```bash
# 保存 token
TOKEN=$(curl -s -X POST http://localhost:8080/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}' | jq -r '.token')

# 使用 token
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/v1/registries
```

---

## 📚 更多资源

- [快速开始](./QUICK_START.md)
- [Docker 服务架构](./DOCKER_SERVICES.md)
- [项目重构总结](./PROJECT_RESTRUCTURE_SUMMARY.md)
- [README](./README.md)

---

<div align="center">
  <sub>命令速查表 - 最后更新：2025-11-09</sub>
</div>

