首页
/ Canner/WrenAI 项目 Docker Compose 开发环境部署指南

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 文件中定义。

部署步骤

  1. 创建 .env 文件并设置必要的环境变量
  2. 准备 config.yaml 配置文件
  3. 运行 docker-compose -f docker-compose-dev.yaml up -d 启动服务
  4. 等待所有服务初始化完成

常见问题解决

  1. 容器启动顺序问题:使用 depends_on 确保服务依赖关系正确
  2. 日志输出问题:设置 PYTHONUNBUFFERED: 1 解决 Python 日志缓冲问题
  3. 跨平台兼容性:通过 platform 参数指定正确的平台架构

总结

本文详细解析了 WrenAI 项目的 Docker Compose 开发环境配置,帮助开发者快速搭建完整的开发环境。通过容器化部署,可以确保开发环境与生产环境的一致性,提高开发效率。