深度解析StitionAI/Devika项目的Docker Compose部署架构
2025-07-05 07:36:01作者:江焘钦
项目概述
StitionAI/Devika是一个基于AI技术的应用项目,采用微服务架构设计,通过Docker Compose实现容器化部署。该项目由三个核心服务组成:Ollama服务、Devika后端引擎和Devika前端应用,共同构建了一个完整的AI应用系统。
核心服务架构分析
1. Ollama服务容器
ollama-service:
image: ollama/ollama:latest
expose:
- 11434
ports:
- 11434:11434
Ollama服务是该项目的AI基础服务,使用官方最新镜像。技术特点包括:
- 暴露11434端口供内部通信
- 映射11434主机端口实现外部访问
- 配置了完善的健康检查机制,确保服务可用性
健康检查配置细节:
- 每5秒执行一次检查
- 超时设置为30秒
- 最多重试5次
- 服务启动后有30秒的初始化宽限期
2. Devika后端引擎
devika-backend-engine:
build:
context: .
dockerfile: devika.dockerfile
depends_on:
- ollama-service
后端引擎是该项目的核心处理单元,关键技术配置包括:
- 依赖Ollama服务,确保启动顺序
- 使用自定义Dockerfile构建镜像
- 暴露1337端口用于API通信
- 配置了与前端相同的健康检查机制
环境变量配置:
OLLAMA_HOST=http://ollama-service:11434
:明确指定Ollama服务地址
数据持久化方案:
- 使用命名卷
devika-backend-dbstore
挂载到容器内特定目录 - 确保数据库数据在容器重启后不丢失
3. Devika前端应用
devika-frontend-app:
build:
context: .
dockerfile: app.dockerfile
args:
- VITE_API_BASE_URL=http://127.0.0.1:1337
前端应用是与用户交互的界面层,关键配置包括:
- 构建时通过参数指定API基础URL
- 依赖后端引擎服务
- 暴露3000端口用于Web访问
- 映射3000主机端口实现外部访问
网络与存储设计
自定义网络配置
networks:
devika-subnetwork:
项目创建了专用的devika-subnetwork
网络,特点包括:
- 所有服务加入同一子网
- 实现服务间隔离通信
- 通过服务名称进行内部DNS解析
数据卷管理
volumes:
devika-backend-dbstore:
后端数据库使用命名卷实现数据持久化:
- 卷名称为
devika-backend-dbstore
- 自动管理存储位置
- 确保数据安全性和可迁移性
部署实践指南
1. 环境准备
确保已安装:
- Docker引擎(版本20.10.0+)
- Docker Compose(版本1.29.0+)
2. 启动流程
- 克隆项目代码
- 在项目根目录执行:
docker-compose up -d
- 系统将按顺序启动所有服务
3. 访问方式
- 前端应用:
http://localhost:3000
- 后端API:
http://localhost:1337
- Ollama服务:
http://localhost:11434
4. 常见问题排查
- 端口冲突:检查11434、1337和3000端口是否被占用
- 构建失败:确保Dockerfile和相关依赖文件完整
- 服务不可用:使用
docker-compose logs
查看各服务日志
架构设计优势
- 微服务隔离:各组件独立部署,互不干扰
- 依赖管理:明确的服务启动顺序控制
- 健康监控:完善的健康检查机制保障系统稳定性
- 数据持久化:关键数据独立存储,避免丢失
- 网络隔离:专用网络提高安全性
扩展建议
-
生产环境部署:
- 添加TLS/SSL加密
- 配置资源限制
- 设置日志轮转
-
性能优化:
- 添加缓存服务
- 考虑负载均衡
- 优化容器资源分配
-
监控方案:
- 集成Prometheus监控
- 添加Grafana仪表盘
- 设置告警机制
通过这份Docker Compose配置,StitionAI/Devika项目实现了一个高度可维护、可扩展的AI应用架构,为开发者提供了清晰的部署蓝图和灵活的定制空间。