Airweave项目本地开发环境Docker Compose配置详解
2025-07-10 07:24:00作者:裘旻烁
概述
本文将深入解析Airweave项目中的docker-compose.dev.yml
文件,该文件用于配置本地开发和调试环境。通过Docker Compose,开发者可以快速搭建包含数据库、缓存、向量搜索等核心组件的完整开发环境。
核心服务配置
1. PostgreSQL数据库服务
PostgreSQL作为Airweave项目的主要数据存储,配置如下:
postgres:
container_name: airweave-db
image: postgres:16
environment:
POSTGRES_DB: airweave
POSTGRES_USER: airweave
POSTGRES_PASSWORD: airweave1234!
command:
- "postgres"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=256MB"
- "-c"
- "effective_cache_size=1GB"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
关键点解析:
- 使用PostgreSQL 16版本,确保兼容性和性能
- 预配置了数据库名称、用户和密码
- 优化了数据库参数:最大连接数200,共享缓冲区256MB,有效缓存1GB
- 数据持久化存储在命名卷
postgres_data
中 - 健康检查通过
pg_isready
命令验证数据库就绪状态
2. Redis缓存服务
Redis作为高性能缓存层:
redis:
container_name: airweave-redis
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
特点:
- 使用轻量级的Alpine Linux基础镜像
- 数据持久化到命名卷
redis_data
- 通过
redis-cli ping
命令进行健康检查
3. 文本向量化服务
使用Sentence Transformers模型进行文本向量化:
text2vec-transformers:
container_name: airweave-embeddings
image: semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2
ports:
- "9878:8080"
environment:
ENABLE_CUDA: 0
WORKERS_PER_NODE: 1
技术细节:
- 使用
all-MiniLM-L6-v2
模型,平衡性能和准确率 - 禁用CUDA(ENABLE_CUDA=0),适合无GPU的开发环境
- 单个工作进程(WORKERS_PER_NODE=1)减少资源占用
- 通过HTTP端点健康检查
4. Qdrant向量数据库
专为向量搜索优化的数据库:
qdrant:
container_name: airweave-qdrant
image: qdrant/qdrant:latest
command: bash -c "apt-get update && apt-get install -y curl && ./entrypoint.sh"
ports:
- "6333:6333"
volumes:
- qdrant_data:/qdrant/storage
关键配置:
- 安装curl工具用于健康检查
- 数据存储在命名卷
qdrant_data
中 - 通过
/healthz
端点进行健康监控
5. Temporal工作流引擎
分布式工作流编排系统:
temporal:
container_name: airweave-temporal
image: temporalio/auto-setup:1.24.2
ports:
- "7233:7233"
- "8233:8233"
environment:
- DB=postgres12
- DB_PORT=5432
- POSTGRES_USER=airweave
- POSTGRES_PWD=airweave1234!
- POSTGRES_SEEDS=postgres
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml
volumes:
- ./temporal-config:/etc/temporal/config/dynamicconfig
重要特性:
- 使用PostgreSQL作为后端存储
- 挂载本地配置目录实现自定义配置
- 依赖PostgreSQL服务健康状态
- 通过
tctl
命令行工具检查服务状态
6. Temporal UI界面
Temporal的Web管理界面:
temporal-ui:
container_name: airweave-temporal-ui
image: temporalio/ui:2.26.2
ports:
- "8088:8080"
environment:
- TEMPORAL_ADDRESS=temporal:7233
- TEMPORAL_CORS_ORIGINS=http://localhost:3000
功能说明:
- 提供可视化的工作流监控界面
- 配置CORS允许本地开发服务器(3000端口)访问
- 依赖Temporal核心服务
数据持久化配置
volumes:
postgres_data:
redis_data:
qdrant_data:
所有关键数据服务都配置了命名卷,确保:
- 开发环境重启后数据不丢失
- 便于数据备份和迁移
- 避免容器删除导致数据丢失
开发环境最佳实践
-
资源分配:根据开发机器性能调整数据库参数,特别是
shared_buffers
和effective_cache_size
-
健康检查:各服务都配置了健康检查,确保依赖服务就绪后再启动
-
故障恢复:关键服务配置了
restart: on-failure
策略,提高开发环境稳定性 -
端口映射:所有服务都暴露标准端口,便于本地调试和工具连接
-
版本控制:固定了主要服务的版本号,确保开发环境一致性
总结
Airweave项目的Docker Compose开发配置精心设计了完整的服务栈,涵盖了从数据存储、缓存、文本处理到工作流管理的各个方面。这种配置方式不仅简化了开发环境搭建,还确保了各服务之间的正确交互和依赖关系,为开发者提供了高效、稳定的本地开发体验。