# GitDataAI Docker 配置

## 文件说明

### Dockerfile 文件

| 文件名 | 服务 | 说明 |
|--------|------|------|
| `gitdata.Dockerfile` | GitData API | 主 API 服务 |
| `email.Dockerfile` | Email Service | 邮件发送服务 |
| `gitpod.Dockerfile` | GitPod Service | Git 服务 |
| `gitsync.Dockerfile` | GitSync Service | Git 同步服务 |
| `migrate.Dockerfile` | Database Migration | 数据库迁移工具 |
| `web.Dockerfile` | Web Frontend | React 前端应用 |

### 配置文件

| 文件名 | 说明 |
|--------|------|
| `docker-compose.yml` | 完整的开发环境配置 |
| `nginx.conf` | Nginx 反向代理配置 |

## 快速开始

### 1. 启动完整开发环境

```bash
# 进入 docker 目录
cd docker

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f
```

### 2. 单独构建服务

```bash
# 构建 GitData API
docker build -f docker/gitdata.Dockerfile -t gitdata-api .

# 构建前端
docker build -f docker/web.Dockerfile -t gitdata-web .
```

### 3. 环境变量配置

创建 `.env` 文件配置环境变量：

```bash
# 数据库配置
POSTGRES_USER=gitdata
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=app

# MinIO 配置
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=your_secure_password
```

## 服务端口

| 服务 | 端口 | 说明 |
|------|------|------|
| Web Frontend | 80 | 前端访问入口 |
| GitData API | 8080 | 主 API 服务 |
| Git HTTP | 5023 | Git HTTP 访问 |
| Git RPC | 5030 | Git RPC 服务 |
| SSH | 5022 | SSH Git 访问 |
| GitPod | 5082 | GitPod 服务 |
| GitSync | 5083 | GitSync 健康检查 |
| PostgreSQL | 5432 | 数据库 |
| Redis | 6379 | 缓存 |
| Qdrant | 6333 | 向量数据库 |
| NATS | 4222 | 消息队列 |
| MinIO | 9000/9001 | 对象存储 |

## 生产环境部署

### 1. 修改环境变量

```bash
# 复制示例配置
cp .env.example .env

# 编辑配置文件，修改密码等敏感信息
vim .env
```

### 2. 启动服务

```bash
# 使用生产配置启动
docker-compose -f docker-compose.yml up -d

# 查看服务状态
docker-compose ps
```

### 3. 数据备份

```bash
# 备份 PostgreSQL
docker exec gitdata-postgres pg_dump -U gitdata app > backup.sql

# 备份 MinIO 数据
docker cp gitdata-minio:/data ./minio-backup
```

## 常见问题

### 1. 服务启动失败

检查日志：
```bash
docker-compose logs <service-name>
```

### 2. 数据库连接失败

确保 PostgreSQL 健康检查通过：
```bash
docker-compose ps postgres
```

### 3. 端口冲突

修改 `docker-compose.yml` 中的端口映射：
```yaml
ports:
  - "8081:8080"  # 修改宿主机端口
```