4.2 KiB
4.2 KiB
Docker 混合模式开发指南
概述
采用 Docker 运行基础设施 + 本地热重载开发 的混合模式,解决传统 Docker Compose 全量构建慢、调试不便的问题。
| 服务 | 运行方式 | 说明 |
|---|---|---|
| es (Elasticsearch) | Docker | 基础服务,稳定不动 |
| tika (文档解析) | Docker | 基础服务,稳定不动 |
| libreoffice (文档转换) | Docker | 基础服务,稳定不动 |
| server (NestJS后端) | 本地 npm run start:dev |
代码改动秒级热重载 |
| web (React前端) | 本地 npm run dev |
代码改动秒级热重载 |
先决条件
- Docker Desktop 已安装并运行
- Node.js >= 20
- 项目代码已克隆到本地
D:\AuraK
启动步骤
Step 1: 启动基础设施 (Docker)
# 进入项目目录
cd D:\AuraK
# 只启动基础设施服务 (es, tika, libreoffice)
docker compose up es tika libreoffice -d
# 确认所有服务正常运行
docker compose ps
预期输出:
NAME IMAGE STATUS
aurak-es elasticsearch:9.2.1 Up (healthy)
aurak-tika apache/tika:latest Up
aurak-libreoffice aurak-libreoffice Up
Step 2: 启动后端 (本地)
# 打开新终端
cd D:\AuraK\server
# 确认 .env 中 Docker 服务地址为 127.0.0.1
# ELASTICSEARCH_HOST=http://127.0.0.1:9200
# TIKA_HOST=http://127.0.0.1:9998
# LIBREOFFICE_URL=http://127.0.0.1:8100
# 安装依赖(首次或依赖变更时)
npm install
# 启动开发模式(热重载)
npm run start:dev
后端启动成功标志:Nest application successfully started,监听 http://localhost:3001
Step 3: 启动前端 (本地)
# 打开新终端
cd D:\AuraK\web
# 确认 .env 配置
# VITE_PORT=13001
# VITE_BACKEND_URL=http://localhost:3001
# 安装依赖(首次或依赖变更时)
npm install
# 启动开发模式(热重载)
npm run dev
前端启动成功标志:Local: http://localhost:13001/
Step 4: 访问系统
打开浏览器访问 http://localhost:13001
重启场景
只需重启后端
# 在 server/ 终端按 Ctrl+C,然后重新运行
npm run start:dev
只需重启前端
# 在 web/ 终端按 Ctrl+C,然后重新运行
npm run dev
只需重启某个 Docker 服务
# 重启单个服务
docker compose restart es
# 重启所有 Docker 服务(不重建)
docker compose restart
完全重建 Docker 服务
# 停止并移除所有 Docker 容器
docker compose down
# 重新构建并启动
docker compose up es tika libreoffice -d
停止
# 停止 Docker 基础设施
cd D:\AuraK
docker compose down
# 分别停止本地进程 (Ctrl+C)
# server 终端: Ctrl+C
# web 终端: Ctrl+C
环境配置参考
server/.env (后端)
PORT=3001
DATABASE_PATH=./data/metadata.db
ELASTICSEARCH_HOST=http://127.0.0.1:9200
TIKA_HOST=http://127.0.0.1:9998
LIBREOFFICE_URL=http://127.0.0.1:8100
JWT_SECRET=123456789
UPLOAD_FILE_PATH=./uploads
MAX_FILE_SIZE=104857600
TEMP_DIR=./temp
DEFAULT_VECTOR_DIMENSIONS=2048
MAX_CHUNK_SIZE=8191
MAX_OVERLAP_SIZE=200
MAX_MEMORY_USAGE_MB=1024
CHUNK_BATCH_SIZE=100
GC_THRESHOLD_MB=800
web/.env (前端)
VITE_API_BASE_URL=/api
VITE_ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0
VITE_PORT=13001
VITE_HOST=0.0.0.0
VITE_BACKEND_URL=http://localhost:3001
VITE_DEFAULT_LANGUAGE=zh
常见问题
Elasticsearch 内存不足
ES_JAVA_OPTS 已在 docker-compose.yml 中限制为 512MB
若仍不足,可修改 docker-compose.yml:
- ES_JAVA_OPTS=-Xms256m -Xmx256m
端口冲突
es:9200 → 本地映射 9200
tika:9998 → 本地映射 9998
libreoffice:8100 → 本地映射 8100
server:3001 → 本地直接启动
web:13001 → 本地直接启动
Docker Desktop 未运行
# 如果 docker 命令报错,请先启动 Docker Desktop
# 或确认 Docker Desktop 已开启 WSL2 集成
生产部署
需要全量 Docker 构建时:
# 完整构建所有服务
docker compose build
# 完整启动所有服务(包含 server/web)
docker compose up -d
最后更新: 2026-05-14