Files
mem0-server/OLLAMA_DOCKER.md
2026-03-06 20:52:16 +08:00

8.8 KiB
Raw Blame History

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


📚 相关文档


现在所有服务都集成在 docker-compose.yaml 中,管理更加简单统一!🎉