feat: Add .env.example configuration file and integrate Redis service into Docker Compose for improved task management. Update desktop application to support document indexing and extraction workflows, enhancing user experience with a new extraction wizard and stepper components. Revise README and documentation for clarity on setup and usage.

This commit is contained in:
erik
2026-07-05 22:39:07 -05:00
parent 9aca926988
commit d95f8f6ad8
70 changed files with 9807 additions and 499 deletions
@@ -0,0 +1,125 @@
services:␍
redis:␍
image: redis:7-alpine␍
command: redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru␍
healthcheck:␍
test: ["CMD", "redis-cli", "ping"]␍
interval: 5s␍
timeout: 3s␍
retries: 5␍
␍
nats:␍
image: nats:2-alpine␍
command: ["-js", "-m", "8222"]␍
healthcheck:␍
test: ["CMD", "wget", "-qO-", "http://localhost:8222/healthz"]␍
interval: 5s␍
timeout: 3s␍
retries: 5␍
␍
minio:␍
image: minio/minio:latest␍
command: server /data --console-address ":9001"␍
environment:␍
MINIO_ROOT_USER: minioadmin␍
MINIO_ROOT_PASSWORD: minioadmin␍
volumes:␍
- minio_data:/data␍
ports:␍
- "9002:9001"␍
healthcheck:␍
test: ["CMD-SHELL", "curl -f http://localhost:9000/minio/health/live || exit 1"]␍
interval: 10s␍
timeout: 5s␍
retries: 5␍
start_period: 10s␍
␍
api:␍
build: .␍
command: ["/app/api"]␍
ports:␍
- "8080:8080"␍
depends_on:␍
redis:␍
condition: service_healthy␍
nats:␍
condition: service_healthy␍
minio:␍
condition: service_started␍
environment:␍
REDIS_URL: redis://redis:6379/0␍
NATS_URL: nats://nats:4222␍
MINIO_ENDPOINT: minio:9000␍
MINIO_ACCESS_KEY: minioadmin␍
MINIO_SECRET_KEY: minioadmin␍
MINIO_BUCKET: pdf-count␍
MODEL_PATH: /app/models/model.onnx␍
INFERENCE_CONFIG: /app/models/inference.json␍
SYNC_MAX_FILES: 50␍
JOB_MAX_FILES: 50000␍
QUEUE_MAX_PENDING: 100000␍
OPENAPI_PATH: /app/openapi.yaml␍
OCR_POOL_SIZE: 4␍
SYNC_PROCESS_CONCURRENCY: 4␍
JOB_INLINE_PROCESSING: "false"␍
LOG_PIPELINE_TIMING: "true"␍
volumes:␍
- ./models/latest:/app/models:ro␍
healthcheck:␍
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]␍
interval: 10s␍
timeout: 5s␍
retries: 5␍
␍
worker:␍
build: .␍
command: ["/app/worker"]␍
depends_on:␍
redis:␍
condition: service_healthy␍
nats:␍
condition: service_healthy␍
minio:␍
condition: service_started␍
environment:␍
REDIS_URL: redis://redis:6379/0␍
NATS_URL: nats://nats:4222␍
MINIO_ENDPOINT: minio:9000␍
MINIO_ACCESS_KEY: minioadmin␍
MINIO_SECRET_KEY: minioadmin␍
MINIO_BUCKET: pdf-count␍
MODEL_PATH: /app/models/model.onnx␍
INFERENCE_CONFIG: /app/models/inference.json␍
WORKER_CONCURRENCY: 4␍
PDF_PROCESS_TIMEOUT_SEC: 120␍
OCR_POOL_SIZE: 4␍
NATS_FETCH_MAX_WAIT_MS: 300␍
LOG_PIPELINE_TIMING: "true"␍
JOB_INLINE_PROCESSING: "false"␍
volumes:␍
- ./models/latest:/app/models:ro␍
␍
autoscaler:␍
build:␍
context: .␍
dockerfile: Dockerfile.autoscaler␍
depends_on:␍
redis:␍
condition: service_healthy␍
volumes:␍
- /var/run/docker.sock:/var/run/docker.sock␍
- .:/project:ro␍
working_dir: /project␍
environment:␍
REDIS_URL: redis://redis:6379/0␍
COMPOSE_FILE: /project/docker-compose.yml␍
COMPOSE_SERVICE: worker␍
MIN_WORKERS: 1␍
MAX_WORKERS: 8␍
WORKER_SLOTS: 4␍
POLL_INTERVAL_SEC: 5␍
SCALE_DOWN_IDLE_SEC: 60␍
␍
volumes:␍
minio_data:␍
␍