File size: 2,070 Bytes
31fa536
4f15b05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a19333a
4f15b05
 
 
 
 
 
 
 
31fa536
4f15b05
 
31fa536
 
 
 
4f15b05
 
 
 
31fa536
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Blog Post Generator — HF Docker Space
# One container, two isolated virtualenvs:
#   /opt/searxng-venv  → SearXNG (internal metasearch on 127.0.0.1:8080)
#   /opt/appenv        → the Gradio app (public on 7860)
# Keeping them separate avoids dependency conflicts between SearXNG and Gradio.
FROM python:3.11-slim

ENV PIP_NO_CACHE_DIR=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PYTHONUNBUFFERED=1 \
    SEARXNG_URL=http://127.0.0.1:8080 \
    DATA_DIR=/data \
    HOME=/app

# --- system deps: build tools + libs for lxml/trafilatura/Pillow, git for SearXNG source ---
RUN apt-get update && apt-get install -y --no-install-recommends \
        bash git build-essential \
        libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev \
        libjpeg62-turbo-dev \
        ca-certificates curl \
    && rm -rf /var/lib/apt/lists/*

# --- SearXNG (from source) into its own venv ---
ARG SEARXNG_REF=master
RUN git clone --depth 1 --branch "$SEARXNG_REF" https://github.com/searxng/searxng.git /usr/local/searxng
RUN python -m venv /opt/searxng-venv \
    && /opt/searxng-venv/bin/pip install -U pip setuptools wheel pyyaml msgspec typing-extensions pybind11 \
    && /opt/searxng-venv/bin/pip install --use-pep517 --no-build-isolation -e /usr/local/searxng

# --- Gradio app into its own venv ---
RUN python -m venv /opt/appenv
COPY requirements.txt /app/requirements.txt
RUN /opt/appenv/bin/pip install -U pip \
    && /opt/appenv/bin/pip install -r /app/requirements.txt

# --- app source + SearXNG config ---
WORKDIR /app
COPY app.py start.sh /app/
COPY pipeline /app/pipeline
COPY searxng/settings.yml /etc/searxng/settings.yml

# HF Spaces run the container as UID 1000 — make everything that gets written writable.
RUN chmod +x /app/start.sh \
    && mkdir -p /data /app/.cache /var/cache/searxng \
    && useradd -m -u 1000 user || true \
    && chown -R 1000:1000 /app /etc/searxng /data /var/cache/searxng /usr/local/searxng \
    && chmod -R u+rwX /app /etc/searxng /data /var/cache/searxng

EXPOSE 7860
USER 1000

ENTRYPOINT ["/app/start.sh"]