# Example Docker Compose for Unified Stirling-PDF Container
# MODE=BOTH (default): Frontend + Backend in single container on port 8080

services:
  stirling-pdf-unified:
    container_name: Stirling-PDF-Unified-Both
    build:
      context: ../..
      dockerfile: docker/Dockerfile.unified
    ports:
      - "8080:8080"
    volumes:
      - ./stirling/data:/usr/share/tessdata:rw
      - ./stirling/config:/configs:rw
      - ./stirling/logs:/logs:rw
      - ./stirling/customFiles:/customFiles:rw
      - ./stirling/pipeline:/pipeline:rw
    environment:
      # MODE parameter: BOTH (default), FRONTEND, or BACKEND
      MODE: BOTH

      # Backend runs internally on this port when MODE=BOTH
      BACKEND_INTERNAL_PORT: 8081

      # Standard Stirling-PDF configuration
      DISABLE_ADDITIONAL_FEATURES: "false"
      DOCKER_ENABLE_SECURITY: "false"
      PUID: 1000
      PGID: 1000
      UMASK: "022"

      # Application settings
      SYSTEM_DEFAULTLOCALE: en-US
      UI_APPNAME: Stirling-PDF
      UI_HOMEDESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs
      SYSTEM_MAXFILESIZE: "100"
      METRICS_ENABLED: "true"

      # Optional: Add OCR languages (comma-separated)
      # TESSERACT_LANGS: "deu,fra,spa"

      # Optional: Java memory settings
      # JAVA_CUSTOM_OPTS: "-Xmx4g"

    restart: unless-stopped

    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

    deploy:
      resources:
        limits:
          memory: 4G
        reservations:
          memory: 2G
