DatomsDB + Ollama Docker Compose 部署指南
这个指南将帮助您使用Docker Compose部署完整的DatomsDB系统,包括集成的Ollama LLM服务。
🎯 特性
- 完全容器化部署: 使用Docker Compose一键部署
- 自动模型配置: 自动下载和配置qwen3:1.7b模型
- 智能回退机制: 支持多个备用模型
- 健康检查: 确保所有服务正常启动
- 持久化存储: 数据和模型持久化保存
🚀 快速开始
前置要求
- Docker (版本 20.10+)
- Docker Compose (版本 2.0+)
- 至少 4GB 可用磁盘空间 (用于模型存储)
- 至少 2GB 可用内存
一键启动
# 使用便捷脚本启动
./scripts/start-with-ollama.sh
或者手动启动:
# 停止现有服务
docker-compose down
# 启动所有服务
docker-compose up --build -d
# 查看日志
docker-compose logs -f
验证部署
启动后,您可以访问:
- DatomsDB API: http://localhost:9000/api/health
- DatomsDB 管理界面: http://localhost:9000/admin
- Ollama API: http://localhost:11434/api/version
📋 服务架构
服务组件
-
datoms-server: 主要的DatomsDB服务
- 端口: 9000
- 提供RESTful API和Web界面
-
ollama: LLM模型服务
- 端口: 11434
- 提供AI模型推理能力
-
ollama-setup: 模型初始化服务
- 一次性运行
- 自动下载和配置模型
网络和存储
- 网络:
datoms-network(bridge网络) - 存储卷:
datoms-data: DatomsDB数据持久化ollama-data: Ollama模型持久化
🔧 配置说明
模型配置
系统默认使用以下模型优先级:
- qwen3:1.7b (主要模型)
- qwen2.5:1.5b (备用模型)
- deepseek-r1:1.5b (备用模型)
配置文件位置: src/agents/config/agent_config.json
{
"llm_service_url": "http://ollama:11434/api/generate",
"llm_model_name": "qwen3:1.7b",
"llm_chat_endpoint": "http://ollama:11434/api/chat"
}
环境变量
在docker-compose.yml中可以配置:
environment:
- PORT=9000
- DATA_DIR=/data
- ENABLE_AUTH=true
- OLLAMA_HOST=http://ollama:11434
🛠️ 管理命令
基本操作
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f [service-name]
模型管理
# 查看可用模型
curl http://localhost:11434/api/tags
# 拉取新模型
docker exec ollama ollama pull [model-name]
# 测试模型
curl -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{"model": "qwen3:1.7b", "prompt": "Hello", "stream": false}'
数据管理
# 备份数据
docker run --rm -v datoms-data:/data -v $(pwd):/backup alpine tar czf /backup/datoms-backup.tar.gz /data
# 恢复数据
docker run --rm -v datoms-data:/data -v $(pwd):/backup alpine tar xzf /backup/datoms-backup.tar.gz -C /
🐛 故障排除
常见问题
-
服务启动失败
# 检查端口占用
sudo netstat -tulpn | grep :9000
sudo netstat -tulpn | grep :11434
# 清理并重启
docker-compose down --volumes
docker-compose up --build -d -
模型下载失败
# 查看模型下载日志
docker-compose logs ollama-setup
# 手动下载模型
docker exec ollama ollama pull qwen3:1.7b -
内存不足
# 检查Docker资源使用
docker stats
# 如果需要,可以使用更小的模型
# 修改 agent_config.json 中的 llm_model_name
日志查看
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f datoms-server
docker-compose logs -f ollama
docker-compose logs -f ollama-setup
健康检查
# 检查服务健康状态
curl http://localhost:9000/api/health
curl http://localhost:11434/api/version
# 检查模型是否可用
curl -s http://localhost:11434/api/tags | jq '.models[].name'
📈 性能优化
资源配置
在docker-compose.yml中添加资源限制:
services:
ollama:
deploy:
resources:
limits:
cpus: '2.0'
memory: 4G
reservations:
memory: 2G
模型优化
- 对于资源受限环境,考虑使用更小的模型
- 可以通过环境变量动态配置模型
- 启用模型缓存以提高响应速度
🔒 安全注意事项
-
生产环境部署:
- 修改默认的API密钥和JWT密钥
- 使用反向代理 (nginx) 处理SSL
- 限制网络访问权限
-
防火墙配置:
# 只允许必要端口
sudo ufw allow 9000/tcp # DatomsDB
sudo ufw allow 11434/tcp # Ollama (如果需要外部访问)
📚 相关文档
🤝 贡献
如果您在使用过程中遇到问题或有改进建议,请提交Issue或Pull Request。