bgustscraper 0.2.0

Advanced semantic scraping engine with AI-driven compliance checks and legal terms validation
Documentation
# ==========================================
# 🐳 Dockerfile para bgustscraper
# Soporte completo para Playwright, Modelos locales Hugging Face (ONNX) y API
# ==========================================

FROM rust:1.75-bookworm as builder

# Instalar Node.js y dependencias del sistema para Playwright y WGPU
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
    apt-get update && apt-get install -y \
    nodejs \
    build-essential \
    pkg-config \
    libssl-dev \
    libudev-dev \
    libegl1-mesa-dev \
    libwayland-dev \
    libxkbcommon-dev \
    libasound2-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY . .

# Compilar binario de Rust en modo Release
RUN cargo build --release

# ==========================================
# Imagen final de ejecución asilada
# ==========================================
FROM debian:bookworm-slim

# Instalar dependencias del sistema operativo requeridas para Playwright Chromium Headless y Node.js
RUN apt-get update && apt-get install -y \
    curl \
    gnupg \
    && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
    apt-get install -y \
    nodejs \
    libssl3 \
    ca-certificates \
    # Dependencias requeridas de sistema por Chromium (Playwright)
    libglib2.0-0 \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libdbus-1-3 \
    libxcb1 \
    libxkbcommon0 \
    libx11-6 \
    libxcomposite1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxrandr2 \
    libgbm1 \
    libpango-1.0-0 \
    libcairo2 \
    libasound2 \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copiar dependencias y binarios del constructor
COPY --from=builder /usr/src/app/target/release/bgustscraper /usr/local/bin/bgustscraper
COPY --from=builder /usr/src/app/worker ./worker

# Instalar dependencias npm del worker
WORKDIR /app/worker
RUN npm install

# Instalar el navegador Chromium específico para Playwright de forma headless
RUN npx playwright install chromium

# ==========================================
# Pre-caché de modelos Hugging Face para el Benchmark
# Esto evita que el benchmark mida la descarga por red en la primera corrida.
# ==========================================
COPY --from=builder /usr/src/app/worker/test_transformers.js .
COPY --from=builder /usr/src/app/worker/test_qwen.js .
RUN node test_transformers.js && node test_qwen.js && rm test_transformers.js test_qwen.js

WORKDIR /app

# Crear directorios para descargas y bases de datos locales
RUN mkdir -p downloads config models

# Exponer el puerto por defecto para el Servidor Web Axum
EXPOSE 8080

# Variable de entorno para indicarle a los modelos de Hugging Face dónde escribir la caché local
ENV HF_HOME=/app/models/.cache

# Por defecto arranca en modo daemon/servidor
CMD ["bgustscraper", "--daemon"]