Canner/WrenAI 项目 Docker Compose 开发环境部署指南
2025-07-07 01:15:50作者:温艾琴Wonderful
概述
本文将详细介绍如何使用 Docker Compose 部署 Canner/WrenAI 项目的开发环境。WrenAI 是一个基于 AI 的数据分析平台,通过 Docker 容器化技术可以快速搭建完整的开发环境。
环境准备
在开始之前,请确保您的系统已安装以下组件:
- Docker 20.10.0 或更高版本
- Docker Compose 2.0.0 或更高版本
核心服务解析
1. 数据卷配置
volumes:
data:
此配置定义了一个名为 data
的持久化数据卷,用于存储 WrenAI 的持久化数据,确保容器重启后数据不会丢失。
2. 网络配置
networks:
wren:
driver: bridge
创建了一个名为 wren
的桥接网络,所有服务都将加入此网络,便于容器间通信。
3. 核心服务组件
3.1 引导服务 (bootstrap)
bootstrap:
image: ghcr.io/canner/wren-bootstrap:${WREN_BOOTSTRAP_VERSION}
volumes:
- data:/app/data
command: /bin/sh /app/init.sh
这是系统的初始化服务,负责准备必要的配置和数据文件。它挂载了数据卷并执行初始化脚本。
3.2 Wren 引擎服务 (wren-engine)
wren-engine:
image: ghcr.io/canner/wren-engine:${WREN_ENGINE_VERSION}
ports:
- ${WREN_ENGINE_PORT}:${WREN_ENGINE_PORT}
volumes:
- data:/usr/src/app/etc
depends_on:
- bootstrap
Wren 引擎是核心计算组件,提供 SQL 查询能力。它依赖于 bootstrap 服务完成初始化。
3.3 AI 服务 (wren-ai-service)
wren-ai-service:
image: ghcr.io/canner/wren-ai-service:${WREN_AI_SERVICE_VERSION}
ports:
- ${AI_SERVICE_FORWARD_PORT}:${WREN_AI_SERVICE_PORT}
environment:
WREN_UI_ENDPOINT: http://host.docker.internal:${WREN_UI_PORT}
PYTHONUNBUFFERED: 1
volumes:
- ${PROJECT_DIR}/config.yaml:/app/data/config.yaml
depends_on:
- qdrant
AI 服务提供自然语言处理能力,需要配置 UI 端点地址,并依赖 Qdrant 向量数据库服务。
3.4 Ibis 服务 (ibis-server)
ibis-server:
image: ghcr.io/canner/wren-engine-ibis:${IBIS_SERVER_VERSION}
ports:
- ${IBIS_SERVER_PORT}:8000
environment:
WREN_ENGINE_ENDPOINT: http://wren-engine:${WREN_ENGINE_PORT}
Ibis 服务提供统一的数据访问接口,连接 Wren 引擎服务。
3.5 Qdrant 向量数据库 (qdrant)
qdrant:
image: qdrant/qdrant:v1.11.0
ports:
- 6333:6333
- 6334:6334
Qdrant 是一个高性能向量搜索引擎,用于存储和检索 AI 模型生成的向量数据。
可选服务
配置文件中还包含了一个注释掉的 PostgreSQL 服务,可用于测试目的:
# postgres:
# image: postgres:14-alpine
# ports:
# - 9432:5432
# environment:
# - POSTGRES_PASSWORD=secret
# - POSTGRES_USER=test
# - POSTGRES_DB=test
如需使用,只需取消注释即可。
环境变量配置
配置文件使用了多个环境变量,包括:
WREN_BOOTSTRAP_VERSION
: 引导服务版本WREN_ENGINE_VERSION
: 引擎服务版本WREN_AI_SERVICE_VERSION
: AI 服务版本IBIS_SERVER_VERSION
: Ibis 服务版本PLATFORM
: 平台架构 (如 linux/amd64)WREN_ENGINE_PORT
: 引擎服务端口AI_SERVICE_FORWARD_PORT
: AI 服务转发端口WREN_UI_PORT
: UI 服务端口
这些变量应在 .env
文件中定义。
部署步骤
- 创建
.env
文件并设置必要的环境变量 - 准备
config.yaml
配置文件 - 运行
docker-compose -f docker-compose-dev.yaml up -d
启动服务 - 等待所有服务初始化完成
常见问题解决
- 容器启动顺序问题:使用
depends_on
确保服务依赖关系正确 - 日志输出问题:设置
PYTHONUNBUFFERED: 1
解决 Python 日志缓冲问题 - 跨平台兼容性:通过
platform
参数指定正确的平台架构
总结
本文详细解析了 WrenAI 项目的 Docker Compose 开发环境配置,帮助开发者快速搭建完整的开发环境。通过容器化部署,可以确保开发环境与生产环境的一致性,提高开发效率。