8.8 KiB
8.8 KiB
Ollama Docker Compose 部署指南
📋 概述
现在 Mem0 Server 的 docker-compose.yaml 已经包含了 Ollama 服务,所有组件都可以通过 Docker Compose 统一管理。
🏗️ 新架构
技术架构
┌─────────────┐
│ Mem0 App │ (FastAPI, port: 8888)
└──────┬──────┘
│
├──→ ┌─────────────┐
│ │ Ollama │ (port: 11434)
│ │ LLM+AI │
│ └─────────────┘
│
├──→ ┌─────────────┐
│ │ ChromaDB │ (Embedded)
│ └─────────────┘
│
└──→ ┌─────────────┐
│ SQLite │ (Embedded)
└─────────────┘
服务列表
mem0- FastAPI 应用(端口 8888)ollama- Ollama AI 服务(端口 11434)
🚀 快速开始
方式 1:使用 GPU(推荐)
如果您的机器有 NVIDIA GPU:
# 启动所有服务
docker-compose --profile gpu up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f ollama
方式 2:仅使用 CPU
如果没有 GPU:
# 启动所有服务(不使用 GPU profile)
docker-compose up -d
# 注意:Ollama 在 CPU 模式下可能较慢
📊 docker-compose.yaml 配置说明
Ollama 服务配置
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: on-failure
networks:
- mem0_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"]
interval: 5s
timeout: 5s
retries: 10
start_period: 60s # 给 Ollama 60 秒启动时间
volumes:
- ollama_data:/root/.ollama # 持久化模型数据
ports:
- "11434:11434" # 暴露 Ollama API
profiles: ["gpu"] # GPU 配置
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Mem0 服务配置更新
mem0:
environment:
- OLLAMA_HOST=http://ollama:11434 # 使用 Docker 网络访问 Ollama
- OLLAMA_LLM_MODEL=llama3.2
- OLLAMA_EMBEDDER_MODEL=nomic-embed-text
depends_on:
ollama:
condition: service_healthy # 等待 Ollama 健康检查通过
🔧 使用步骤
1. 首次启动
# 启动服务
docker-compose --profile gpu up -d
# 等待 Ollama 启动完成(约 60 秒)
docker-compose logs -f ollama
# 查看已加载的模型
docker exec ollama ollama list
2. 下载模型
首次使用需要下载模型:
# 进入 Ollama 容器
docker exec -it ollama bash
# 下载 LLM 模型
ollama pull llama3.2
# 下载嵌入模型
ollama pull nomic-embed-text
# 退出
exit
或者一次性下载:
docker exec ollama ollama pull llama3.2
docker exec ollama ollama pull nomic-embed-text
3. 测试 Ollama
# 测试 Ollama API
curl http://localhost:11434/api/tags
# 测试生成
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Hello, how are you?"
}'
4. 测试 Mem0 API
# 访问 API 文档
http://localhost:8888/docs
# 创建记忆
curl -X POST http://localhost:8888/memories \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么可以帮助你的?"}
],
"user_id": "test_user"
}'
💾 数据持久化
Ollama 数据卷
- 名称:
ollama_data - 路径:
/root/.ollama - 内容: 下载的模型文件、配置等
查看数据卷
# 查看数据卷信息
docker volume inspect ollama_data
# 查看数据卷位置
docker volume ls | grep ollama_data
⚙️ 配置选项
使用不同的模型
编辑 .env 文件:
OLLAMA_LLM_MODEL=mistral
OLLAMA_EMBEDDER_MODEL=mxbai-embed-large
重启服务:
docker-compose --profile gpu up -d
调整 Ollama 资源
如果需要更多 GPU 资源:
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0', '1'] # 使用特定 GPU
capabilities: [gpu]
🔍 故障排查
Ollama 启动失败
# 查看详细日志
docker-compose logs ollama
# 检查健康状态
docker-compose ps ollama
# 进入容器调试
docker exec -it ollama bash
模型下载慢
# 设置国内镜像(如果可用)
export OLLAMA_MODELS=https://mirror.ghproxy.com/https://github.com/ollama/ollama/releases/download
# 或者手动下载模型文件后挂载
GPU 不可用
# 检查 NVIDIA Docker 是否安装
nvidia-smi
# 检查容器是否识别 GPU
docker exec ollama nvidia-smi
# 如果没有 GPU,使用 CPU 模式
docker-compose up -d
Mem0 无法连接 Ollama
# 检查网络连通性
docker exec mem0 ping ollama
# 检查 Ollama 是否运行
docker exec mem0 curl http://ollama:11434/api/tags
# 查看依赖关系
docker-compose ps
🎯 优势特点
统一管理
- ✅ 所有服务通过 docker-compose 管理
- ✅ 一键启动/停止
- ✅ 自动处理依赖关系
数据隔离
- ✅ Ollama 数据独立存储
- ✅ 不会污染宿主机环境
- ✅ 易于备份和迁移
网络自动化
- ✅ Docker 网络自动配置
- ✅ 服务间通过服务名通信
- ✅ 无需手动配置 IP
健康检查
- ✅ 自动检测 Ollama 状态
- ✅ Mem0 等待 Ollama 就绪
- ✅ 提高系统可靠性
📈 性能优化
GPU 加速
# 启用 GPU 支持
profiles: ["gpu"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
内存优化
# 限制最大内存使用
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 4G
并发优化
# 设置 Ollama 并发数
docker exec ollama sh -c 'echo "OLLAMA_NUM_PARALLEL=4" >> /root/.ollama/config.json'
🔄 常用命令
启动服务
# 带 GPU 支持
docker-compose --profile gpu up -d
# 仅 CPU
docker-compose up -d
停止服务
docker-compose --profile gpu down
查看状态
# 查看所有服务
docker-compose ps
# 查看 Ollama 日志
docker-compose logs -f ollama
# 查看 Mem0 日志
docker-compose logs -f mem0
重启服务
# 重启 Ollama
docker-compose restart ollama
# 重启 Mem0
docker-compose restart mem0
# 重启所有
docker-compose restart
进入容器
# 进入 Ollama 容器
docker exec -it ollama bash
# 进入 Mem0 容器
docker exec -it mem0 bash
管理模型
# 列出已安装的模型
docker exec ollama ollama list
# 下载新模型
docker exec ollama ollama pull mistral
# 删除模型
docker exec ollama ollama rm llama3.2
# 查看模型信息
docker exec ollama ollama show llama3.2
💡 最佳实践
1. 首次部署
# 1. 启动服务
docker-compose --profile gpu up -d
# 2. 等待 Ollama 就绪
sleep 60
# 3. 下载所需模型
docker exec ollama ollama pull llama3.2
docker exec ollama ollama pull nomic-embed-text
# 4. 测试 API
curl http://localhost:8888/docs
2. 日常使用
# 启动
docker-compose --profile gpu up -d
# 停止
docker-compose --profile gpu down
# 重启
docker-compose --profile gpu restart
3. 数据备份
# 备份 Ollama 数据
docker run --rm \
-v ollama_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/ollama_backup.tar.gz /data
4. 恢复数据
# 恢复 Ollama 数据
docker run --rm \
-v ollama_data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/ollama_backup.tar.gz -C /
🆘 常见问题
Q1: Ollama 启动很慢?
A: Ollama 首次启动需要加载模型,可能需要 60 秒。健康检查配置了 start_period: 60s 来等待。
Q2: 如何切换模型?
A: 修改 .env 中的 OLLAMA_LLM_MODEL,然后重启服务,并确保新模型已下载。
Q3: GPU 内存不足?
A: 使用更小的模型(如 phi3),或限制并发数。
Q4: 如何完全清理?
A:
docker-compose --profile gpu down -v # 删除所有数据卷
Q5: 可以在没有 GPU 的情况下运行吗?
A: 可以,但速度较慢。使用 docker-compose up -d(不带 gpu profile)。
📚 相关文档
- README.md - 项目主文档
- TECH_STACK.md - 技术架构说明
- QUICK_START.md - 快速入门
- DEPLOYMENT.md - 详细部署指南
现在所有服务都集成在 docker-compose.yaml 中,管理更加简单统一!🎉