首页
/ AirWeave项目测试环境Docker Compose配置详解

AirWeave项目测试环境Docker Compose配置详解

2025-07-10 07:24:36作者:彭桢灵Jeremy

测试环境架构概述

AirWeave项目采用微服务架构设计,其测试环境通过Docker Compose编排了多个关键服务组件。本文将深入解析测试环境的配置细节,帮助开发者理解各服务的作用及其交互方式。

核心服务组件配置

1. PostgreSQL数据库服务

postgres:
  image: postgres:16
  environment:
    - POSTGRES_USER=airweave
    - POSTGRES_PASSWORD=airweave1234!
    - POSTGRES_DB=airweave
  ports:
    - "9432:5432"
  volumes:
    - postgres_data:/var/lib/postgresql/data
  • 使用PostgreSQL 16官方镜像
  • 配置了专用用户、密码和数据库名称
  • 数据持久化通过volume实现
  • 健康检查确保服务可用性后才启动依赖服务

2. Redis缓存服务

redis:
  image: redis:7-alpine
  ports:
    - "9379:6379"
  volumes:
    - redis_data:/data
  • 采用轻量级的Redis 7 Alpine镜像
  • 数据持久化配置确保测试数据不丢失
  • 简单的ping命令健康检查机制

3. 文本向量化服务

text2vec-transformers:
  image: semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2
  environment:
    ENABLE_CUDA: 0
    WORKERS_PER_NODE: 1
  • 使用预训练的sentence-transformers模型
  • 禁用CUDA加速,适合纯CPU测试环境
  • 单worker配置适合测试场景

4. Qdrant向量数据库

qdrant:
  image: qdrant/qdrant:latest
  command: bash -c "apt-get update && apt-get install -y curl && ./entrypoint.sh"
  • 最新版Qdrant向量数据库
  • 特别安装curl工具用于健康检查
  • 持久化存储向量数据

后端服务配置

backend:
  build:
    context: ../backend
    dockerfile: Dockerfile.dev
  depends_on:
    postgres:
      condition: service_healthy
    redis:
      condition: service_healthy
    qdrant:
      condition: service_healthy
  • 使用开发专用的Dockerfile构建
  • 严格的服务依赖关系,确保基础服务健康后才启动
  • 丰富的环境变量配置覆盖所有测试需求

关键环境变量说明

  • DATABASE_URL: 异步PostgreSQL连接字符串
  • REDIS_HOST: Redis服务地址
  • QDRANT_HOST/QDRANT_PORT: 向量数据库连接配置
  • TEXT2VEC_INFERENCE_URL: 文本向量化服务端点
  • TESTING=true: 明确标识测试环境
  • AUTH_ENABLED=false: 测试时禁用认证

测试环境最佳实践

  1. 端口映射策略:所有服务端口都映射到9xxx系列,避免与开发环境冲突
  2. 健康检查机制:每个服务都有针对性的健康检查配置
  3. 数据持久化:使用命名volume确保测试数据不会随容器销毁而丢失
  4. 资源隔离:测试环境与开发环境完全隔离,互不影响

测试环境启动流程

  1. 数据库服务(PostgreSQL)最先启动并完成初始化
  2. Redis缓存服务随后启动
  3. 向量相关服务(Qdrant和文本向量化)并行启动
  4. 所有依赖服务健康检查通过后,后端服务开始启动
  5. 后端服务健康检查通过后,测试套件可以开始执行

通过这种精心设计的Docker Compose配置,AirWeave项目确保了测试环境的可靠性和一致性,为自动化测试提供了坚实的基础设施支持。