# Docker 配置目录

> 统一管理所有 Docker 相关配置文件

---

## 📁 目录结构

```
docker/
├── README.md                      # 本文件
├── SETUP.md                       # Docker 设置文档
├── .gitignore                     # Git 忽略规则
├── .env -> ../.env               # 软链接到根目录统一配置 ✨
├── docker-compose.yml             # 统一 Compose 配置（多环境）
└── ragflow/                        # RAGFlow 配置与模板
```

> **注意**: 环境变量已统一管理，详见 [ENV_SETUP_GUIDE.md](../ENV_SETUP_GUIDE.md)

---

## 🚀 快速开始

### 1. 开发环境

```bash
# 1. 配置环境变量（如果还没有）
bash scripts/env/setup-env.sh development

# 2. 启动基础服务 (PostgreSQL + Redis)
docker compose -f docker/docker-compose.yml --profile core up -d

# 3. 启动所有服务（包含工具）
docker compose -f docker/docker-compose.yml --profile core --profile tools up -d

# 4. 查看服务状态
docker compose -f docker/docker-compose.yml ps
```

### 2. 生产环境

```bash
# 1. 配置生产环境变量
bash scripts/env/setup-env.sh production
vim .env  # 设置密码等敏感信息

# 2. 启动基础服务
docker compose -f docker/docker-compose.yml --profile core up -d

# 3. 启动所有服务（包含监控）
docker compose -f docker/docker-compose.yml \
  --profile core --profile monitoring up -d
```

---

## 📋 配置文件说明

### docker-compose.yml
- **用途**: 统一 Compose 配置（通过 profile 区分能力）
- **特点**:
  - `core`：PostgreSQL + Redis
  - `temporal`：Temporal 工作流
  - `storage`：MinIO
  - `monitoring`：Prometheus + Grafana
  - `tools`：Redis Commander
  - `knowledge`：RAGFlow + 依赖

---

## 🔧 使用脚本管理（推荐）

项目提供了统一的管理脚本 `scripts/dev/dev.sh`：

```bash
# 交互式菜单
bash scripts/dev/dev.sh

# 或使用别名
alias dev='bash scripts/dev/dev.sh'
dev
```

在菜单中选择：
- `8` - 启动 Docker 服务
- `9` - 停止 Docker 服务
- `10` - 查看 Docker 容器
- `11` - 删除容器及数据卷 ⚠️

---

## 📊 服务端口

### 开发环境端口

**核心服务**:
- PostgreSQL: `localhost:5432`
- Redis: `localhost:6379`

**管理工具**:
- pgAdmin: `http://localhost:5050`
- Redis Commander: `http://localhost:8081`

**工作流引擎**:
- Temporal gRPC: `localhost:7233`
- Temporal UI: `http://localhost:8080`

**对象存储**:
- MinIO API: `localhost:9000`
- MinIO Console: `http://localhost:9001`

**邮件测试**:
- MailHog SMTP: `localhost:1025`
- MailHog UI: `http://localhost:8025`

### 生产环境端口

**核心服务**:
- PostgreSQL: `localhost:6002`
- Redis: `localhost:6003`

**工作流引擎**:
- Temporal gRPC: `localhost:6033`
- Temporal HTTP: `localhost:6034`
- Temporal UI: `http://localhost:6080`

**对象存储**:
- MinIO API: `localhost:6090`
- MinIO Console: `http://localhost:6091`

**监控系统**:
- Prometheus: `http://localhost:6009`
- Grafana: `http://localhost:6012`

---

## 🔐 环境变量管理

项目使用统一的环境配置方案，所有环境变量在根目录管理。

详细说明请参考：[ENV_SETUP_GUIDE.md](../ENV_SETUP_GUIDE.md)

### 快速配置

```bash
# 开发环境
bash scripts/env/setup-env.sh development

# UAT环境
bash scripts/env/setup-env.sh uat

# 生产环境
bash scripts/env/setup-env.sh production
```

### Docker 集成方式

Docker Compose 通过软链接自动使用根目录的 `.env` 文件：

```
docker/.env -> ../.env
```

这样所有 docker-compose 文件都能读取统一的环境配置。

### 验证配置

```bash
# 验证环境变量
bash scripts/env/validate-env.sh

# 查看当前配置
cat .env
```

---

## ⚙️ Temporal 配置

> **注意**: 项目当前使用默认的 Temporal 配置。如需自定义配置，可以创建 `temporal-config/` 目录。

### 自定义配置（可选）

如果需要自定义 Temporal 配置：

```bash
# 1. 创建配置目录
mkdir -p docker/temporal-config

# 2. 创建配置文件
cat > docker/temporal-config/development-sql.yaml << EOF
system:
  forceSearchAttributesCacheRefresh: true
limit:
  maxIDLength: 255
EOF
```

### Docker 集成

在 docker-compose 文件中挂载配置：

```yaml
temporal:
  volumes:
    - ./temporal-config:/etc/temporal/config/dynamicconfig
  environment:
    - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml
```

---

## 📖 相关文档

- [Docker 设置](./setup.md) - Docker 详细设置说明
- [环境配置指南](../ENV_SETUP_GUIDE.md) - 统一环境变量配置
- [部署指南](../docs/setup/deployment-quickstart.md) - 完整部署流程

---

## 🔗 外部配置

某些服务的配置文件在其他目录（如果存在）：

- **Prometheus**: `../monitoring/prometheus.yml`
- **Grafana**: `../monitoring/grafana/`

> 💡 监控相关配置与 Docker 相对独立

---

**最后更新**: 2025-12-25  
**维护者**: FFOA 开发团队
