claude-context与Docker集成:容器化部署的完整指南

【免费下载链接】claude-context Code search MCP for Claude Code. Make entire codebase the context for any coding agent. 【免费下载链接】claude-context 项目地址: https://gitcode.com/GitHub_Trending/co/claude-context

claude-context是一款强大的代码搜索MCP工具,能够将整个代码库转化为任何编码代理的上下文。本指南将详细介绍如何通过Docker容器化部署claude-context,实现快速、可靠且一致的环境配置,让你轻松搭建属于自己的代码搜索系统。

为什么选择Docker部署claude-context?

Docker容器化部署为claude-context带来了诸多优势:

  • 环境一致性:无论在开发、测试还是生产环境,都能确保一致的运行结果
  • 简化部署:一键启动完整的claude-context服务栈,无需复杂的手动配置
  • 隔离性:容器化运行确保claude-context与系统其他应用互不干扰
  • 可移植性:在任何支持Docker的平台上轻松部署,包括本地服务器和云环境
  • 版本控制:轻松管理不同版本的claude-context和依赖组件

容器化部署前的准备工作

硬件要求

  • CPU:至少2核
  • 内存:至少4GB RAM(推荐8GB以上)
  • 磁盘空间:至少10GB可用空间
  • 网络:能够访问Docker Hub和相关服务

软件要求

  • Docker Engine (20.10.0+)
  • Docker Compose (v2.0+)
  • Git

必要的服务账户

  1. 向量数据库(选择以下一种):

    • Zilliz Cloud(推荐):注册账号并获取API密钥
    • 本地Milvus:通过Docker部署Milvus服务
  2. 嵌入服务提供商(选择以下一种):

    • OpenAI API密钥
    • VoyageAI API密钥
    • Gemini API密钥
    • 本地Ollama服务

Zilliz Cloud注册与API密钥获取 图:Zilliz Cloud注册与API密钥获取界面,用于获取向量数据库服务凭证

快速开始:Docker Compose一键部署

1. 克隆项目仓库

git clone https://gitcode.com/GitHub_Trending/co/claude-context
cd claude-context

2. 创建环境配置文件

在项目根目录创建.env文件,添加以下必要配置:

# 向量数据库配置
MILVUS_ADDRESS=milvus:19530
MILVUS_TOKEN=your-milvus-token (如果使用认证)

# 嵌入服务配置 (选择一个)
EMBEDDING_PROVIDER=OpenAI
OPENAI_API_KEY=your-openai-api-key
# 或
# EMBEDDING_PROVIDER=Ollama
# OLLAMA_HOST=http://ollama:11434
# OLLAMA_MODEL=nomic-embed-text

# 应用配置
SPLITTER_TYPE=ast
LOG_LEVEL=info

3. 创建Docker Compose配置

在项目根目录创建docker-compose.yml文件:

version: '3.8'

services:
  # Milvus向量数据库服务
  milvus:
    image: milvusdb/milvus:latest
    container_name: claude-context-milvus
    restart: always
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - milvus_data:/var/lib/milvus
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - etcd
      - minio

  # 依赖服务 - etcd
  etcd:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: claude-context-etcd
    restart: always
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - etcd_data:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379

  # 依赖服务 - MinIO
  minio:
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    container_name: claude-context-minio
    restart: always
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - minio_data:/minio_data
    command: minio server /minio_data --console-address ":9001"
    ports:
      - "9000:9000"
      - "9001:9001"

  # 可选 - Ollama本地嵌入服务
  ollama:
    image: ollama/ollama:latest
    container_name: claude-context-ollama
    restart: always
    volumes:
      - ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:11434/"]
      interval: 30s
      timeout: 10s
      retries: 3

  # Claude-context主服务
  claude-context:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: claude-context-app
    restart: always
    environment:
      - NODE_ENV=production
      - MILVUS_ADDRESS=milvus:19530
      - EMBEDDING_PROVIDER=${EMBEDDING_PROVIDER}
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - OLLAMA_HOST=${OLLAMA_HOST:-http://ollama:11434}
      - OLLAMA_MODEL=${OLLAMA_MODEL:-nomic-embed-text}
      - SPLITTER_TYPE=${SPLITTER_TYPE:-ast}
    volumes:
      - ./:/app
      - /app/node_modules
    ports:
      - "3000:3000"
    depends_on:
      - milvus
      - ollama  # 仅当使用Ollama时需要

volumes:
  milvus_data:
  etcd_data:
  minio_data:
  ollama_data:

4. 创建Dockerfile

在项目根目录创建Dockerfile

FROM node:18-alpine as builder

WORKDIR /app

# 复制依赖文件
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.json ./
COPY packages/core/package.json ./packages/core/
COPY packages/mcp/package.json ./packages/mcp/

# 安装pnpm
RUN npm install -g pnpm

# 安装依赖
RUN pnpm install

# 复制源代码
COPY . .

# 构建项目
RUN pnpm run build

# 生产阶段
FROM node:18-alpine

WORKDIR /app

# 设置时区
ENV TZ=UTC

# 复制构建产物
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json

# 暴露应用端口
EXPOSE 3000

# 启动命令
CMD ["node", "dist/packages/mcp/src/index.js"]

5. 启动服务

docker-compose up -d

这个命令将启动所有服务组件,包括Milvus向量数据库、依赖服务以及claude-context应用本身。首次启动可能需要几分钟时间,因为需要下载镜像和初始化数据库。

索引工作流与Docker集成

claude-context的核心功能是将代码库索引到向量数据库中,以便进行高效的语义搜索。在Docker环境中,这个过程变得更加简单和可靠。

理解索引流程

claude-context的索引流程包含以下关键步骤:

  1. 代码分割:使用AST或LangChain分割器将代码文件分割成有意义的代码块
  2. 嵌入生成:将代码块转换为向量表示
  3. 向量存储:将向量存储到Milvus向量数据库中
  4. 元数据关联:建立向量与原始代码位置的关联

索引流程图 图:claude-context的索引流程图,展示了代码从分割到存储的完整过程

在Docker环境中执行索引

要在Docker容器中为你的代码库创建索引,可以使用以下命令:

# 为指定代码库建立索引
docker-compose exec claude-context node dist/packages/mcp/src/index.js index --path /path/to/your/codebase

# 查看索引状态
docker-compose exec claude-context node dist/packages/mcp/src/index.js status

# 搜索代码
docker-compose exec claude-context node dist/packages/mcp/src/index.js search "vector database operations"

高级配置与优化

性能优化

  1. 资源分配:根据需要调整Docker服务的资源限制:
services:
  milvus:
    # ...其他配置
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 8G
        reservations:
          cpus: '2'
          memory: 4G
  1. 索引优化:修改.env文件调整代码分割参数:
# 代码分割配置
SPLITTER_TYPE=ast
SPLITTER_CHUNK_SIZE=2500
SPLITTER_CHUNK_OVERLAP=300

持久化与备份

为确保数据安全,建议定期备份Milvus数据卷:

# 创建数据备份
docker run --rm -v milvus_data:/source -v $(pwd):/backup alpine tar -czf /backup/milvus_backup_$(date +%Y%m%d).tar.gz -C /source .

# 恢复备份
docker run --rm -v milvus_data:/target -v $(pwd):/backup alpine sh -c "rm -rf /target/* && tar -xzf /backup/milvus_backup_YYYYMMDD.tar.gz -C /target"

本地部署方案:完全离线运行claude-context

对于需要完全离线运行的场景,可以使用Ollama提供本地嵌入服务,结合Docker Compose实现完整的离线部署。

本地部署架构 图:claude-context本地部署架构,展示了所有组件的交互关系

1. 预加载Ollama模型

# 进入Ollama容器
docker-compose exec ollama ollama pull nomic-embed-text

2. 配置离线环境变量

修改.env文件:

# 使用本地Ollama嵌入服务
EMBEDDING_PROVIDER=Ollama
OLLAMA_HOST=http://ollama:11434
OLLAMA_MODEL=nomic-embed-text

# 使用本地Milvus
MILVUS_ADDRESS=milvus:19530

3. 重启服务使配置生效

docker-compose restart claude-context

故障排除与常见问题

服务启动问题

如果claude-context服务无法启动,请检查日志:

docker-compose logs claude-context

常见问题及解决方法:

  1. Milvus连接失败

    • 确保Milvus服务已正常启动:docker-compose logs milvus
    • 检查网络连接和防火墙设置
    • 确认MILVUS_ADDRESS配置正确
  2. API密钥问题

    • 检查嵌入服务提供商API密钥是否正确
    • 确认API密钥是否有足够的权限和配额

索引性能问题

如果索引过程缓慢或失败:

  1. 增加资源:为Milvus和claude-context服务分配更多CPU和内存
  2. 调整批次大小:通过环境变量INDEX_BATCH_SIZE调整索引批次大小
  3. 排除大文件:在.contextignore文件中排除大型二进制文件

Docker相关问题

  1. 空间不足:清理未使用的Docker资源:

    docker system prune -a
    
  2. 网络问题:检查Docker网络配置,确保服务之间可以相互访问

总结

通过Docker容器化部署claude-context,你可以快速搭建一个功能完善、环境一致的代码搜索系统。无论是开发环境、测试环境还是生产环境,Docker都能提供可靠且一致的部署体验。

本指南涵盖了从基本部署到高级配置的各个方面,包括环境准备、一键部署、索引操作、性能优化和故障排除。通过这些步骤,你可以轻松实现claude-context的容器化部署,并充分利用其强大的代码搜索功能。

想要了解更多关于claude-context的高级功能和配置选项,请参阅项目文档:

【免费下载链接】claude-context Code search MCP for Claude Code. Make entire codebase the context for any coding agent. 【免费下载链接】claude-context 项目地址: https://gitcode.com/GitHub_Trending/co/claude-context

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐