# Docker 基础环境使用说明

## 1. 用途

`compose.yaml` 用于启动智保通本地开发所需的 MySQL 8 和 Redis 7。

该文件只负责基础设施，不负责导入业务数据，也不负责启动后端、H5 或管理后台。容器启动后，仍需回到项目根目录，按照根目录 `README.md` 的“首次初始化”顺序执行数据和知识库初始化脚本。

第二、第三阶段使用的 Milvus 不包含在本文件中，请使用已经安装好的本地 Milvus。

## 2. 容器与连接信息

| 服务 | 容器名称 | 地址 | 账号 | 密码 |
|---|---|---|---|---|
| MySQL 8 | `zhibaotong-mysql` | `127.0.0.1:3306` | `root` | `mysql147258` |
| Redis 7 | `zhibaotong-redis` | `127.0.0.1:6379` | 无 | `redis147258` |

第二、第三阶段的 `scripts/init-databases.ps1` 和 `scripts/init-databases.sh` 默认使用容器名 `zhibaotong-mysql`，与本 compose 文件保持一致。

## 3. 启动基础环境

先启动 Docker Desktop，然后在项目根目录执行：

```bash
docker compose -f database/compose.yaml up -d
```

Windows PowerShell、macOS 和 Linux 使用相同命令。

首次运行可能需要下载 MySQL 和 Redis 镜像。查看容器状态：

```bash
docker compose -f database/compose.yaml ps
```

当 MySQL 和 Redis 的状态均为 `healthy` 后，再执行根目录 `README.md` 中的首次初始化命令。

## 4. backend/.env 配置

使用本 compose 文件时，`backend/.env` 中的公共连接配置应与下面保持一致：

```dotenv
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=mysql147258

REDIS_URL=redis://:redis147258@127.0.0.1:6379/0
```

各阶段使用的数据库名称如下：

| 阶段 | Core 数据库 | Agent 数据库 | Analytics 数据库 |
|---|---|---|---|
| 第一阶段 | `insurance_s1_core` | `insurance_s1_agent` | `insurance_s1_analytics` |
| 第二阶段 | `insurance_s2_core` | `insurance_s2_agent` | `insurance_s2_analytics` |
| 第三阶段 | `insurance_s3_core` | `insurance_s3_agent` | `insurance_s3_analytics` |

请根据当前分支填写对应的三个 `MYSQL_*_DATABASE` 配置。

## 5. 停止与再次启动

停止容器但保留数据：

```bash
docker compose -f database/compose.yaml stop
```

再次启动：

```bash
docker compose -f database/compose.yaml start
```

MySQL 和 Redis 数据保存在 Docker 命名卷中。不要执行 `docker compose down -v`，该命令会删除本地数据库和 Redis 数据。

## 6. 已存在同名容器

如果本机已经存在 `zhibaotong-mysql` 或 `zhibaotong-redis`，并且能够正常使用，可以继续使用已有容器，不需要重复执行 `docker compose up`。

如需改用本 compose 文件，应先自行确认旧容器中的数据是否需要保留，再处理同名容器，避免误删现有数据。
