Chandra OCR 2的Docker Compose配置:多容器部署方案

发布时间:2026/5/27 21:10:04

Chandra OCR 2的Docker Compose配置:多容器部署方案 Chandra OCR 2的Docker Compose配置多容器部署方案【免费下载链接】chandraOCR model that handles complex tables, forms, handwriting with full layout.项目地址: https://gitcode.com/GitHub_Trending/ch/chandraChandra OCR 2是一款强大的OCR模型能够处理复杂表格、表单和手写文档同时保持完整的布局信息。这款先进的OCR工具支持90多种语言在数学公式、表格识别和多语言文档处理方面表现出色。对于需要大规模文档处理的企业用户来说使用Docker Compose进行多容器部署是最佳选择可以轻松实现高可用、可扩展的生产环境配置。为什么选择Docker Compose部署Chandra OCR 2传统的单机部署方式存在诸多限制而Docker Compose多容器方案提供了以下优势资源隔离每个服务在独立的容器中运行避免资源冲突易于扩展可以根据负载动态调整vLLM推理容器的数量快速部署一键启动完整的OCR处理流水线环境一致性确保开发、测试、生产环境完全一致监控管理集成Prometheus、Grafana等监控工具完整的Docker Compose配置文件创建docker-compose.yml文件配置完整的Chandra OCR 2服务栈version: 3.8 services: # vLLM推理服务 - 核心OCR引擎 chandra-vllm: image: datalab-to/chandra-ocr-2:latest container_name: chandra-vllm restart: unless-stopped deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] ports: - 8000:8000 environment: - MODEL_NAMEdatalab-to/chandra-ocr-2 - MAX_MODEL_LEN12384 - TENSOR_PARALLEL_SIZE1 - GPU_MEMORY_UTILIZATION0.9 volumes: - ./models:/models command: python -m vllm.entrypoints.openai.api_server --model datalab-to/chandra-ocr-2 --max-model-len 12384 --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --port 8000 healthcheck: test: [CMD, curl, -f, http://localhost:8000/health] interval: 30s timeout: 10s retries: 3 # API网关服务 - 提供RESTful接口 chandra-api: build: context: . dockerfile: Dockerfile.api container_name: chandra-api restart: unless-stopped ports: - 8080:8080 depends_on: - chandra-vllm environment: - VLLM_API_BASEhttp://chandra-vllm:8000/v1 - VLLM_MODEL_NAMEchandra - MAX_OUTPUT_TOKENS12384 - REDIS_HOSTredis volumes: - ./uploads:/app/uploads - ./outputs:/app/outputs # 批处理服务 - 处理大批量文档 chandra-worker: build: context: . dockerfile: Dockerfile.worker container_name: chandra-worker restart: unless-stopped depends_on: - chandra-vllm - redis - postgres environment: - VLLM_API_BASEhttp://chandra-vllm:8000/v1 - REDIS_HOSTredis - POSTGRES_HOSTpostgres volumes: - ./batch_input:/app/input - ./batch_output:/app/output deploy: replicas: 2 # Redis缓存 - 提高性能 redis: image: redis:7-alpine container_name: chandra-redis restart: unless-stopped ports: - 6379:6379 command: redis-server --appendonly yes volumes: - redis-data:/data # PostgreSQL数据库 - 存储处理结果 postgres: image: postgres:15-alpine container_name: chandra-postgres restart: unless-stopped environment: - POSTGRES_DBchandra - POSTGRES_USERchandra - POSTGRES_PASSWORDchandra123 ports: - 5432:5432 volumes: - postgres-data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 监控服务 - Prometheus Grafana prometheus: image: prom/prometheus:latest container_name: chandra-prometheus restart: unless-stopped ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus grafana: image: grafana/grafana:latest container_name: chandra-grafana restart: unless-stopped ports: - 3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORDadmin volumes: - grafana-data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning volumes: redis-data: postgres-data: prometheus-data: grafana-data:环境变量配置文件创建.env文件管理配置# Docker Compose环境变量 COMPOSE_PROJECT_NAMEchandra-ocr COMPOSE_PROFILEproduction # vLLM服务配置 VLLM_MODEL_NAMEdatalab-to/chandra-ocr-2 VLLM_API_BASEhttp://chandra-vllm:8000/v1 VLLM_GPUSall MAX_OUTPUT_TOKENS12384 # 数据库配置 POSTGRES_DBchandra POSTGRES_USERchandra POSTGRES_PASSWORDchandra123 POSTGRES_HOSTpostgres POSTGRES_PORT5432 # Redis配置 REDIS_HOSTredis REDIS_PORT6379 REDIS_PASSWORD # API服务配置 API_PORT8080 API_WORKERS4 UPLOAD_FOLDER/app/uploads OUTPUT_FOLDER/app/outputs # 监控配置 PROMETHEUS_PORT9090 GRAFANA_PORT3000一键启动和管理的Shell脚本创建deploy.sh脚本简化部署流程#!/bin/bash # 颜色定义 RED\033[0;31m GREEN\033[0;32m YELLOW\033[1;33m NC\033[0m # No Color echo -e ${GREEN}Chandra OCR 2 Docker Compose 部署脚本${NC} echo # 检查Docker和Docker Compose check_dependencies() { echo -e ${YELLOW}检查依赖...${NC} if ! command -v docker /dev/null; then echo -e ${RED}错误: Docker未安装${NC} exit 1 fi if ! command -v docker-compose /dev/null; then echo -e ${RED}错误: Docker Compose未安装${NC} exit 1 fi echo -e ${GREEN}✓ 依赖检查通过${NC} } # 检查NVIDIA GPU check_gpu() { echo -e ${YELLOW}检查GPU支持...${NC} if docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi /dev/null; then echo -e ${GREEN}✓ NVIDIA GPU可用${NC} export GPU_ENABLEDtrue else echo -e ${YELLOW}⚠ 未检测到NVIDIA GPU将使用CPU模式${NC} export GPU_ENABLEDfalse fi } # 创建必要目录 create_directories() { echo -e ${YELLOW}创建目录结构...${NC} mkdir -p {uploads,outputs,models,batch_input,batch_output,logs,grafana/provisioning} echo -e ${GREEN}✓ 目录创建完成${NC} } # 启动服务 start_services() { echo -e ${YELLOW}启动Chandra OCR 2服务...${NC} if [ $GPU_ENABLED true ]; then echo -e ${GREEN}使用GPU加速模式${NC} docker-compose up -d else echo -e ${YELLOW}使用CPU模式${NC} docker-compose -f docker-compose.yml -f docker-compose.cpu.yml up -d fi echo -e ${GREEN}✓ 服务启动完成${NC} } # 显示服务状态 show_status() { echo -e ${YELLOW}服务状态:${NC} echo ---------------------------------------- docker-compose ps echo -e \n${YELLOW}访问地址:${NC} echo API服务: http://localhost:8080 echo vLLM服务: http://localhost:8000 echo Grafana监控: http://localhost:3000 (admin/admin) echo Prometheus: http://localhost:9090 } # 主流程 main() { check_dependencies check_gpu create_directories start_services show_status echo -e \n${GREEN}部署完成Chandra OCR 2已启动并运行。${NC} echo 使用 docker-compose logs -f 查看日志 echo 使用 docker-compose down 停止服务 } main性能优化配置针对不同场景创建专门的Docker Compose配置文件docker-compose.prod.yml- 生产环境配置services: chandra-vllm: deploy: resources: limits: cpus: 8 memory: 32G reservations: devices: - driver: nvidia count: 2 capabilities: [gpu] environment: - TENSOR_PARALLEL_SIZE2 - PIPELINE_PARALLEL_SIZE1 - MAX_NUM_BATCHED_TOKENS16384docker-compose.dev.yml- 开发环境配置services: chandra-vllm: environment: - DEV_MODEtrue - LOG_LEVELDEBUG volumes: - ./chandra:/app/chandra - ./tests:/app/tests监控和日志配置Prometheus配置 (prometheus.yml)global: scrape_interval: 15s scrape_configs: - job_name: chandra-vllm static_configs: - targets: [chandra-vllm:8000] labels: service: ocr-inference - job_name: chandra-api static_configs: - targets: [chandra-api:8080] labels: service: api-gateway - job_name: chandra-worker static_configs: - targets: [chandra-worker:8081] labels: service: batch-worker日志收集配置version: 3.8 services: loki: image: grafana/loki:latest container_name: chandra-loki ports: - 3100:3100 promtail: image: grafana/promtail:latest container_name: chandra-promtail volumes: - /var/log:/var/log - ./promtail-config.yml:/etc/promtail/config.yml command: -config.file/etc/promtail/config.yml扩展和负载均衡配置对于高并发场景可以配置多个vLLM实例和负载均衡services: chandra-vllm-1: image: datalab-to/chandra-ocr-2:latest environment: - INSTANCE_ID1 deploy: replicas: 2 chandra-vllm-2: image: datalab-to/chandra-ocr-2:latest environment: - INSTANCE_ID2 deploy: replicas: 2 nginx: image: nginx:alpine ports: - 8000:80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - chandra-vllm-1 - chandra-vllm-2故障排除和常见问题1. GPU内存不足# 降低批次大小 docker-compose exec chandra-vllm vllm config --max-batch-size 4 # 调整GPU内存使用率 environment: - GPU_MEMORY_UTILIZATION0.82. 服务启动失败# 查看详细日志 docker-compose logs chandra-vllm # 检查GPU驱动 nvidia-smi # 验证模型下载 docker-compose exec chandra-vllm ls -la /models3. 性能调优# 监控资源使用 docker stats # 调整vLLM参数 environment: - MAX_NUM_SEQS256 - MAX_NUM_BATCHED_TOKENS32768 - BLOCK_SIZE16最佳实践建议1. 资源分配策略开发环境单GPU16GB内存测试环境双GPU32GB内存生产环境四GPU64GB内存以上2. 数据持久化volumes: - type: bind source: /data/chandra/uploads target: /app/uploads - type: volume source: chandra-data target: /app/data3. 安全配置environment: - API_KEY${API_KEY} - ENABLE_AUTHtrue - CORS_ORIGINShttps://yourdomain.com - RATE_LIMIT100/分钟4. 备份策略# 数据库备份 docker-compose exec postgres pg_dump -U chandra chandra backup.sql # 模型备份 docker cp chandra-vllm:/models ./backup/models总结通过Docker Compose部署Chandra OCR 2您可以获得一个完整、可扩展的OCR处理平台。这种多容器架构不仅提供了高可用性和弹性扩展能力还简化了部署和维护流程。无论是处理少量文档的个人用户还是需要大规模批处理的企业用户这种部署方案都能满足您的需求。核心优势一键部署简化复杂的OCR系统配置监控完善集成Prometheus和Grafana弹性扩展根据负载动态调整资源安全可靠完善的权限和访问控制数据持久确保处理结果不丢失现在就开始使用Docker Compose部署Chandra OCR 2体验高效、稳定的文档OCR处理服务吧【免费下载链接】chandraOCR model that handles complex tables, forms, handwriting with full layout.项目地址: https://gitcode.com/GitHub_Trending/ch/chandra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻