Add V2 local dev compose
This commit is contained in:
@@ -27,3 +27,20 @@
|
|||||||
- 给用户、团队、交接和评审看的文档统一使用中文。
|
- 给用户、团队、交接和评审看的文档统一使用中文。
|
||||||
- `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。
|
- `extracted/` 里的机器抽取文档可以保留原始语言或工程化表达,优先服务开发检索。
|
||||||
- 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“知识库权限问答模型”上。
|
- 旧代码只在领域边界匹配时复用,不把旧的“答疑资产审核模型”硬套到新的“知识库权限问答模型”上。
|
||||||
|
|
||||||
|
## 本地开发启动
|
||||||
|
|
||||||
|
阶段二已经提供本地开发编排:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ai_knowledge_base_v2
|
||||||
|
docker compose -f docker-compose.dev.yml up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
默认访问地址:
|
||||||
|
|
||||||
|
- 用户端 H5:`http://127.0.0.1:5173/`
|
||||||
|
- 后端 API:`http://127.0.0.1:8100/api/health`
|
||||||
|
- MySQL:`127.0.0.1:3307`
|
||||||
|
|
||||||
|
开发阶段 mock 短信验证码为 `123456`。
|
||||||
|
|||||||
7
ai_knowledge_base_v2/apps/backend/.dockerignore
Normal file
7
ai_knowledge_base_v2/apps/backend/.dockerignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.env
|
||||||
|
.venv/
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
.pytest_cache/
|
||||||
|
.mypy_cache/
|
||||||
|
.ruff_cache/
|
||||||
15
ai_knowledge_base_v2/apps/backend/Dockerfile
Normal file
15
ai_knowledge_base_v2/apps/backend/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
EXPOSE 8100
|
||||||
|
|
||||||
|
CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8100"]
|
||||||
@@ -26,6 +26,15 @@
|
|||||||
|
|
||||||
## 本地启动
|
## 本地启动
|
||||||
|
|
||||||
|
方式一:使用 V2 统一编排。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ai_knowledge_base_v2
|
||||||
|
docker compose -f docker-compose.dev.yml up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
方式二:本地 Python 直接启动。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ai_knowledge_base_v2/apps/backend
|
cd ai_knowledge_base_v2/apps/backend
|
||||||
python -m venv .venv
|
python -m venv .venv
|
||||||
@@ -39,7 +48,5 @@ uvicorn app.main:app --reload --host 127.0.0.1 --port 8100
|
|||||||
|
|
||||||
## 下一步
|
## 下一步
|
||||||
|
|
||||||
- 补 Alembic 初始迁移脚本。
|
|
||||||
- 补聊天会话和消息接口。
|
|
||||||
- 补管理员登录接口。
|
- 补管理员登录接口。
|
||||||
- 接入 Redis 替换内存短信验证码和 Token 黑名单。
|
- 接入 Redis 替换内存短信验证码和 Token 黑名单。
|
||||||
|
|||||||
5
ai_knowledge_base_v2/apps/user-client/.dockerignore
Normal file
5
ai_knowledge_base_v2/apps/user-client/.dockerignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
*.tsbuildinfo
|
||||||
12
ai_knowledge_base_v2/apps/user-client/Dockerfile
Normal file
12
ai_knowledge_base_v2/apps/user-client/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM node:22-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm ci
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
EXPOSE 5173
|
||||||
|
|
||||||
|
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]
|
||||||
@@ -15,6 +15,15 @@
|
|||||||
|
|
||||||
## 本地启动
|
## 本地启动
|
||||||
|
|
||||||
|
方式一:使用 V2 统一编排。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ai_knowledge_base_v2
|
||||||
|
docker compose -f docker-compose.dev.yml up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
方式二:本地 Node 直接启动。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ai_knowledge_base_v2/apps/user-client
|
cd ai_knowledge_base_v2/apps/user-client
|
||||||
npm install
|
npm install
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# 阶段二记录:本地开发编排
|
||||||
|
|
||||||
|
日期:2026-07-06
|
||||||
|
|
||||||
|
## 本次目标
|
||||||
|
|
||||||
|
补齐 V2 本地开发编排,让 MySQL、后端和用户端 H5 可以一起启动,降低后续开发和测试的环境成本。
|
||||||
|
|
||||||
|
## 已完成
|
||||||
|
|
||||||
|
- 新增 `ai_knowledge_base_v2/docker-compose.dev.yml`。
|
||||||
|
- 新增 MySQL 8.4 服务:
|
||||||
|
- 容器名:`ai_kb_v2_mysql`
|
||||||
|
- 数据库:`ai_knowledge_base_v2`
|
||||||
|
- 用户:`ai_kb`
|
||||||
|
- 本机端口:`3307`
|
||||||
|
- 新增后端 Dockerfile:
|
||||||
|
- 启动前执行 `alembic upgrade head`
|
||||||
|
- 后端端口:`8100`
|
||||||
|
- 新增用户端 Dockerfile:
|
||||||
|
- Vue H5 dev server 端口:`5173`
|
||||||
|
- 更新 V2 根目录、后端、用户端 README。
|
||||||
|
|
||||||
|
## 默认访问地址
|
||||||
|
|
||||||
|
- 用户端 H5:`http://127.0.0.1:5173/`
|
||||||
|
- 后端健康检查:`http://127.0.0.1:8100/api/health`
|
||||||
|
- MySQL:`127.0.0.1:3307`
|
||||||
|
|
||||||
|
## 使用方式
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ai_knowledge_base_v2
|
||||||
|
docker compose -f docker-compose.dev.yml up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
## 当前边界
|
||||||
|
|
||||||
|
- 当前编排面向本地开发,不是生产部署方案。
|
||||||
|
- MySQL root 密码和业务密码都是本地开发默认值,生产环境必须更换。
|
||||||
|
- 后端仍使用 mock 短信验证码 `123456`。
|
||||||
|
- 真实飞书和真实大模型尚未接入。
|
||||||
|
|
||||||
|
## 验证记录
|
||||||
|
|
||||||
|
- `docker compose -f docker-compose.dev.yml config --quiet` 已通过。
|
||||||
|
- `git diff --check` 已通过。
|
||||||
|
- 尝试执行 `docker compose -f docker-compose.dev.yml build backend user-client`,Dockerfile 和构建上下文已正常进入构建流程;由于当前环境拉取 Docker Hub 基础镜像速度过慢,等待数分钟后人工中断,未判定为代码构建失败。
|
||||||
@@ -27,3 +27,4 @@
|
|||||||
| `2026-07-06-decision-register.md` | 开发决策登记表,集中记录用户明确决策和默认工程决策。 |
|
| `2026-07-06-decision-register.md` | 开发决策登记表,集中记录用户明确决策和默认工程决策。 |
|
||||||
| `2026-07-06-phase2-backend-foundation.md` | 阶段二后端基础工程第一批记录。 |
|
| `2026-07-06-phase2-backend-foundation.md` | 阶段二后端基础工程第一批记录。 |
|
||||||
| `2026-07-06-phase2-user-client.md` | 阶段二用户端 Vue 3 H5 第一批记录。 |
|
| `2026-07-06-phase2-user-client.md` | 阶段二用户端 Vue 3 H5 第一批记录。 |
|
||||||
|
| `2026-07-06-phase2-dev-compose.md` | 阶段二本地开发编排记录。 |
|
||||||
|
|||||||
54
ai_knowledge_base_v2/docker-compose.dev.yml
Normal file
54
ai_knowledge_base_v2/docker-compose.dev.yml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.4
|
||||||
|
container_name: ai_kb_v2_mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: rootpass
|
||||||
|
MYSQL_DATABASE: ai_knowledge_base_v2
|
||||||
|
MYSQL_USER: ai_kb
|
||||||
|
MYSQL_PASSWORD: ai_kb
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
command:
|
||||||
|
- --character-set-server=utf8mb4
|
||||||
|
- --collation-server=utf8mb4_unicode_ci
|
||||||
|
ports:
|
||||||
|
- "3307:3306"
|
||||||
|
volumes:
|
||||||
|
- ai_kb_v2_mysql_data:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uai_kb -pai_kb --silent"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 20
|
||||||
|
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./apps/backend
|
||||||
|
container_name: ai_kb_v2_backend
|
||||||
|
environment:
|
||||||
|
APP_ENV: docker
|
||||||
|
DEBUG: "true"
|
||||||
|
DATABASE_URL: mysql+pymysql://ai_kb:ai_kb@mysql:3306/ai_knowledge_base_v2?charset=utf8mb4
|
||||||
|
JWT_SECRET_KEY: local-dev-secret-change-before-production
|
||||||
|
MOCK_SMS_ENABLED: "true"
|
||||||
|
MOCK_SMS_CODE: "123456"
|
||||||
|
AUTO_CREATE_TABLES: "false"
|
||||||
|
ports:
|
||||||
|
- "8100:8100"
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
user-client:
|
||||||
|
build:
|
||||||
|
context: ./apps/user-client
|
||||||
|
container_name: ai_kb_v2_user_client
|
||||||
|
environment:
|
||||||
|
VITE_API_BASE_URL: http://127.0.0.1:8100/api
|
||||||
|
ports:
|
||||||
|
- "5173:5173"
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
ai_kb_v2_mysql_data:
|
||||||
Reference in New Issue
Block a user