Jelajahi Sumber

docs:补充Docker基础环境使用说明

yangxiaolong 1 bulan lalu
induk
melakukan
4e802e1323
3 mengubah file dengan 138 tambahan dan 0 penghapusan
  1. 2 0
      README.md
  2. 81 0
      database/Docker基础环境使用说明.md
  3. 55 0
      database/compose.yaml

+ 2 - 0
README.md

@@ -32,6 +32,8 @@
 
 先启动本地 MySQL 8 和 Redis,并准备 Python 3.12、uv、Node.js 22、pnpm。
 
+如果希望使用 Docker 启动 MySQL 和 Redis,请先阅读 [Docker 基础环境使用说明](database/Docker基础环境使用说明.md),并使用其中的 `database/compose.yaml`。
+
 项目只读取 `backend/.env`。确认其中的 MySQL、Redis、DeepSeek、LangSmith 和本地安全密钥后,在项目根目录运行:
 
 ```powershell

+ 81 - 0
database/Docker基础环境使用说明.md

@@ -0,0 +1,81 @@
+# 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 文件,应先自行确认旧容器中的数据是否需要保留,再处理同名容器,避免误删现有数据。

+ 55 - 0
database/compose.yaml

@@ -0,0 +1,55 @@
+name: zhibaotong-infrastructure
+
+services:
+  mysql:
+    image: mysql:8.0
+    container_name: zhibaotong-mysql
+    restart: unless-stopped
+    environment:
+      TZ: Asia/Shanghai
+      MYSQL_ROOT_PASSWORD: mysql147258
+    command:
+      - --character-set-server=utf8mb4
+      - --collation-server=utf8mb4_0900_ai_ci
+    ports:
+      - "3306:3306"
+    volumes:
+      - mysql-data:/var/lib/mysql
+    healthcheck:
+      test:
+        - CMD-SHELL
+        - mysqladmin ping -h 127.0.0.1 -uroot -p"$$MYSQL_ROOT_PASSWORD" --silent
+      interval: 10s
+      timeout: 5s
+      retries: 10
+      start_period: 30s
+
+  redis:
+    image: redis:7-alpine
+    container_name: zhibaotong-redis
+    restart: unless-stopped
+    environment:
+      TZ: Asia/Shanghai
+      REDIS_PASSWORD: redis147258
+    command:
+      - redis-server
+      - --appendonly
+      - "yes"
+      - --requirepass
+      - redis147258
+    ports:
+      - "6379:6379"
+    volumes:
+      - redis-data:/data
+    healthcheck:
+      test:
+        - CMD-SHELL
+        - redis-cli -a "$$REDIS_PASSWORD" --no-auth-warning ping
+      interval: 10s
+      timeout: 5s
+      retries: 10
+      start_period: 5s
+
+volumes:
+  mysql-data:
+  redis-data: