# 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