Spring AI 1.x 系列【59】容器化开发支持:Docker Compose 与 Testcontainers

1. 概述

在开发 Spring AI 应用时,经常需要连接各种外部服务 ------ 模型服务(如 Ollama)、向量数据库(如 Chroma、Qdrant、Weaviate、Milvus、OpenSearch)、MCP 网关等。手动安装和配置这些服务既繁琐又容易出错。

Spring AI 提供了两种开箱即用的容器化解决方案,让开发者无需关心服务连接细节:

方案 适用阶段 原理
Docker Compose 本地开发 通过 Docker Compose 启动服务容器,Spring Boot 自动配置连接
Testcontainers 集成测试 通过 Testcontainers 在测试中动态启动容器,测试结束自动销毁

两者的共同优势:只需添加一个依赖,无需手动配置连接参数 。Spring AI 会通过服务连接工厂(Service Connection Factory)自动探测容器并建立连接。


2. Docker Compose 支持

2.1 依赖配置

Spring AI 提供了 Spring Boot 自动配置,用于连接通过 Docker Compose 运行的模型服务或向量数据库。

Maven(pom.xml):

xml 复制代码
<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-spring-boot-docker-compose</artifactId>
</dependency>

Gradle(build.gradle):

groovy 复制代码
dependencies {
    implementation 'org.springframework.ai:spring-ai-spring-boot-docker-compose'
}

📖 请参阅 依赖管理 章节,将 Spring AI BOM 添加到你的构建文件中。

2.2 服务连接工厂

spring-ai-spring-boot-docker-compose 模块提供了以下服务连接工厂:

连接详情(Connection Details) 匹配容器镜像
AwsOpenSearchConnectionDetails localstack/localstack
ChromaConnectionDetails chromadb/chroma、ghcr.io/chroma-core/chroma
MongoConnectionDetails mongodb/mongodb-atlas-local
OllamaConnectionDetails ollama/ollama
OpenSearchConnectionDetails opensearchproject/opensearch
QdrantConnectionDetails qdrant/qdrant
TypesenseConnectionDetails typesense/typesense
WeaviateConnectionDetails semitechnologies/weaviate、cr.weaviate.io/semitechnologies/weaviate
McpSseClientConnectionDetails docker/mcp-gateway

📖 Spring Boot 的 spring-boot-docker-compose 模块提供了更多通用服务连接。完整列表请参阅 Docker Compose Support 文档。


3. Testcontainers 支持

3.1 依赖配置

Spring AI 提供了 Spring Boot 自动配置,用于连接通过 Testcontainers 运行的模型服务或向量数据库。

Maven(pom.xml):

xml 复制代码
<dependency>
   <groupId>org.springframework.ai</groupId>
   <artifactId>spring-ai-spring-boot-testcontainers</artifactId>
</dependency>

Gradle(build.gradle):

groovy 复制代码
dependencies {
    implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers'
}

📖 请参阅 依赖管理 章节,将 Spring AI BOM 添加到你的构建文件中。

3.2 服务连接工厂

spring-ai-spring-boot-testcontainers 模块提供了以下服务连接工厂:

连接详情(Connection Details) 匹配容器类型
AwsOpenSearchConnectionDetails LocalStackContainer
ChromaConnectionDetails ChromaDBContainer
McpSseClientConnectionDetails DockerMcpGatewayContainer
MilvusServiceClientConnectionDetails MilvusContainer
MongoConnectionDetails MongoDBAtlasLocalContainer
OllamaConnectionDetails OllamaContainer
OpenSearchConnectionDetails OpensearchContainer
QdrantConnectionDetails QdrantContainer
TypesenseConnectionDetails TypesenseContainer
WeaviateConnectionDetails WeaviateContainer

📖 Spring Boot 的 spring-boot-testcontainers 模块提供了更多通用服务连接。完整列表请参阅 Testcontainers Service Connections 文档。


4. 总结

Spring AI 通过两个专用模块,将容器化服务连接的复杂度降到最低:

对比维度 Docker Compose Testcontainers
用途 本地开发环境 集成测试
生命周期 手动或通过 docker compose 管理 测试框架自动管理(启动/销毁)
服务类型 9 种 AI 专用 + Spring Boot 通用 10 种 AI 专用 + Spring Boot 通用
配置量 添加依赖即可 添加依赖即可

核心原则 :只需添加对应依赖,Spring Boot 自动配置会探测运行中的容器并建立连接,开发者无需手写任何连接参数。

相关推荐
桃西西呀1 分钟前
LangGraph4j之一:客服请求分诊既要循环又要分流,我用 LangGraph4j 把控制流抽成了数据
人工智能·llm·ai编程
leizhen1984080923 分钟前
中国 AI 反超的临界点,与世界格局正在发生的三重变化(漫画)
人工智能
Rosanci27 分钟前
AI 写完不等于能用:以“验收标准 + 仓库检查”为中心的 AI 编程质控流程
人工智能·ai 编程
众链网络33 分钟前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
guhunyihan35 分钟前
无代码系统搭建平台,探索恐象 AI 带来的开发新范式
大数据·人工智能
林伽一43 分钟前
林伽一 · AI科技周报 | 2026年10月第2周
人工智能·科技
卿卿的产品经理日记1 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
AI闲人1 小时前
Jev 们不缺判断力,缺的是你的标准
人工智能·数字化·企业ai落地·语义层
Pin_Qing2 小时前
速度正式单独收费:OpenAI GPT-6.1 Sol Ultrafast上线,8倍速、6倍价,开发者该怎么选?
人工智能
m0_715674432 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全