demo / Dockerfile
IPF's picture
Upload 5 files
a548a27 verified
# ------------------------------------------------------------------------------
# DCI-Agent Search – Hugging Face Spaces Docker
# Prestige Purple themed Gradio app for autonomous document search
# ------------------------------------------------------------------------------
FROM python:3.11-slim
# Prevent Python from writing pyc files and buffering stdout
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PORT=7860
# ------------------------------------------------------------------------------
# System dependencies
# ------------------------------------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
git \
gnupg \
build-essential \
ripgrep \
unzip \
&& rm -rf /var/lib/apt/lists/*
# ------------------------------------------------------------------------------
# Install Node.js 20+ (required for native pi-mono)
# ------------------------------------------------------------------------------
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
RUN node --version && npm --version
# ------------------------------------------------------------------------------
# Required: clone and build pi-mono
# If this fails, the image build should fail so HF uses the native PI path.
# ------------------------------------------------------------------------------
RUN git clone --depth 1 --branch codex/context-management-ablation \
https://github.com/jdf-prog/pi-mono.git /app/pi-mono
RUN cd /app/pi-mono && npm install
RUN cd /app/pi-mono && npm run build
RUN test -f /app/pi-mono/packages/coding-agent/dist/cli.js
# ------------------------------------------------------------------------------
# Python dependencies
# ------------------------------------------------------------------------------
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ------------------------------------------------------------------------------
# Copy app code
# ------------------------------------------------------------------------------
COPY . /app
# Ensure default corpus is present
RUN ls -la /app/default_corpus/ || echo "WARNING: default_corpus not found"
# ------------------------------------------------------------------------------
# Expose and run
# ------------------------------------------------------------------------------
EXPOSE 7860
CMD ["python", "app.py"]