首页
/ Airweave项目本地开发环境Docker Compose配置详解

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:

所有关键数据服务都配置了命名卷,确保:

  • 开发环境重启后数据不丢失
  • 便于数据备份和迁移
  • 避免容器删除导致数据丢失

开发环境最佳实践

  1. 资源分配:根据开发机器性能调整数据库参数,特别是shared_bufferseffective_cache_size

  2. 健康检查:各服务都配置了健康检查,确保依赖服务就绪后再启动

  3. 故障恢复:关键服务配置了restart: on-failure策略,提高开发环境稳定性

  4. 端口映射:所有服务都暴露标准端口,便于本地调试和工具连接

  5. 版本控制:固定了主要服务的版本号,确保开发环境一致性

总结

Airweave项目的Docker Compose开发配置精心设计了完整的服务栈,涵盖了从数据存储、缓存、文本处理到工作流管理的各个方面。这种配置方式不仅简化了开发环境搭建,还确保了各服务之间的正确交互和依赖关系,为开发者提供了高效、稳定的本地开发体验。