# docker-compose.yml - Chandra OCR 2 전체 스택 # 위치: ~/projects/chandra/docker/docker-compose.yml # --mm-processor-kwargs '{"max_pixels": 1003520, "min_pixels": 100352}' services: # ============================================ # Chandra vLLM 추론 서버 (GPU) # ============================================ vllm-server: image: vllm/vllm-openai:v0.17.0 container_name: chandra-vllm restart: unless-stopped ipc: host # 외부 포트 노출 불필요 (FastAPI가 같은 compose 네트워크에서 접근) # 디버깅 필요 시 아래 주석 해제 # ports: # - "8000:8000" volumes: - ~/projects/models/chandra-ocr-2:/models/chandra-ocr-2:ro environment: - HF_HUB_OFFLINE=1 - TRANSFORMERS_OFFLINE=1 command: > --model /models/chandra-ocr-2 --served-model-name chandra --dtype bfloat16 --max-model-len 12384 --max-num-seqs 64 --max-num-batched-tokens 8192 --enable-prefix-caching --mm-processor-kwargs '{"max_pixels": 2007040, "min_pixels": 100352}' --gpu-memory-utilization 0.85 --trust-remote-code deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 5 start_period: 180s # 모델 로딩 대기 (3분) # ============================================ # FastAPI 서비스 (기존 인터페이스 유지) # ============================================ fastapi: build: context: . dockerfile: Dockerfile container_name: chandra-fastapi restart: unless-stopped ports: - "10001:10001" volumes: - /var/run/docker.sock:/var/run/docker.sock # LibreOffice 컨테이너 접근용 - ./uploads:/app/uploads environment: - CHANDRA_VLLM_IP=vllm-server - CHANDRA_VLLM_PORT=8000 depends_on: vllm-server: condition: service_healthy