From 046daf442acdae158ce82709b65e7a0ba5bbd6c9 Mon Sep 17 00:00:00 2001 From: ItzCrazyKns <95534749+ItzCrazyKns@users.noreply.github.com> Date: Thu, 23 Oct 2025 19:06:27 +0530 Subject: [PATCH] feat(docker): update searxng build script --- Dockerfile | 52 +++++++++++++++++++++++++-------------------------- entrypoint.sh | 30 ++++++++++++++++++----------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/Dockerfile b/Dockerfile index b219660..b94fc3d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,22 +17,11 @@ RUN yarn build FROM node:24.5.0-slim -RUN apt-get update && \ - apt-get install -y \ - python3 \ - python3-pip \ - python3-venv \ - python3-dev \ - sqlite3 \ - git \ - build-essential \ - libxslt-dev \ - zlib1g-dev \ - libffi-dev \ - libssl-dev \ - uwsgi \ - uwsgi-plugin-python3 \ - curl \ +RUN apt-get update && apt-get install -y \ + python3-dev python3-babel python3-venv python-is-python3 \ + uwsgi uwsgi-plugin-python3 \ + git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \ + curl sudo \ && rm -rf /var/lib/apt/lists/* WORKDIR /home/perplexica @@ -45,28 +34,39 @@ COPY drizzle ./drizzle RUN mkdir /home/perplexica/uploads -RUN useradd --system --home-dir /usr/local/searxng --shell /bin/sh searxng - -WORKDIR /usr/local/searxng -RUN git clone https://github.com/searxng/searxng.git . && \ - python3 -m venv venv && \ - . venv/bin/activate && \ - pip install --upgrade pip setuptools wheel pyyaml && \ - pip install -r requirements.txt && \ - pip install uwsgi +RUN useradd --shell /bin/bash --system \ + --home-dir "/usr/local/searxng" \ + --comment 'Privacy-respecting metasearch engine' \ + searxng +RUN mkdir "/usr/local/searxng" RUN mkdir -p /etc/searxng +RUN chown -R "searxng:searxng" "/usr/local/searxng" + COPY searxng/settings.yml /etc/searxng/settings.yml COPY searxng/limiter.toml /etc/searxng/limiter.toml COPY searxng/uwsgi.ini /etc/searxng/uwsgi.ini +RUN chown -R searxng:searxng /etc/searxng -RUN chown -R searxng:searxng /usr/local/searxng /etc/searxng +USER searxng + +RUN git clone "https://github.com/searxng/searxng" \ + "/usr/local/searxng/searxng-src" + +RUN python3 -m venv "/usr/local/searxng/searx-pyenv" +RUN "/usr/local/searxng/searx-pyenv/bin/pip" install --upgrade pip setuptools wheel pyyaml msgspec +RUN cd "/usr/local/searxng/searxng-src" && \ + "/usr/local/searxng/searx-pyenv/bin/pip" install --use-pep517 --no-build-isolation -e . + +USER root WORKDIR /home/perplexica COPY entrypoint.sh ./entrypoint.sh RUN chmod +x ./entrypoint.sh RUN sed -i 's/\r$//' ./entrypoint.sh || true +RUN echo "searxng ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + EXPOSE 3000 8080 ENV SEARXNG_API_URL=http://localhost:8080 diff --git a/entrypoint.sh b/entrypoint.sh index 48ee169..1d15d1c 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,24 +1,32 @@ #!/bin/sh set -e -cd /usr/local/searxng -export SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml - -# Start SearXNG in background with all output redirected to /dev/null -/usr/local/searxng/venv/bin/uwsgi \ - --http-socket 0.0.0.0:8080 \ - --ini /etc/searxng/uwsgi.ini \ - --virtualenv /usr/local/searxng/venv \ - --disable-logging > /dev/null 2>&1 & - echo "Starting SearXNG..." + +sudo -H -u searxng bash -c "cd /usr/local/searxng/searxng-src && export SEARXNG_SETTINGS_PATH='/etc/searxng/settings.yml' && export FLASK_APP=searx/webapp.py && /usr/local/searxng/searx-pyenv/bin/python -m flask run --host=0.0.0.0 --port=8080" & +SEARXNG_PID=$! + +echo "Waiting for SearXNG to be ready..." sleep 5 +COUNTER=0 +MAX_TRIES=30 until curl -s http://localhost:8080 > /dev/null 2>&1; do + COUNTER=$((COUNTER+1)) + if [ $COUNTER -ge $MAX_TRIES ]; then + echo "Warning: SearXNG health check timeout, but continuing..." + break + fi sleep 1 done -echo "SearXNG started successfully" + +if curl -s http://localhost:8080 > /dev/null 2>&1; then + echo "SearXNG started successfully (PID: $SEARXNG_PID)" +else + echo "SearXNG may not be fully ready, but continuing (PID: $SEARXNG_PID)" +fi cd /home/perplexica echo "Starting Perplexica..." + exec node server.js \ No newline at end of file