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
: 测试时禁用认证
测试环境最佳实践
- 端口映射策略:所有服务端口都映射到9xxx系列,避免与开发环境冲突
- 健康检查机制:每个服务都有针对性的健康检查配置
- 数据持久化:使用命名volume确保测试数据不会随容器销毁而丢失
- 资源隔离:测试环境与开发环境完全隔离,互不影响
测试环境启动流程
- 数据库服务(PostgreSQL)最先启动并完成初始化
- Redis缓存服务随后启动
- 向量相关服务(Qdrant和文本向量化)并行启动
- 所有依赖服务健康检查通过后,后端服务开始启动
- 后端服务健康检查通过后,测试套件可以开始执行
通过这种精心设计的Docker Compose配置,AirWeave项目确保了测试环境的可靠性和一致性,为自动化测试提供了坚实的基础设施支持。