feat(docker): update searxng build script

This commit is contained in:
ItzCrazyKns
2025-10-23 19:06:27 +05:30
parent a01fce4e64
commit 046daf442a
2 changed files with 45 additions and 37 deletions

View File

@@ -17,22 +17,11 @@ RUN yarn build
FROM node:24.5.0-slim FROM node:24.5.0-slim
RUN apt-get update && \ RUN apt-get update && apt-get install -y \
apt-get install -y \ python3-dev python3-babel python3-venv python-is-python3 \
python3 \ uwsgi uwsgi-plugin-python3 \
python3-pip \ git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \
python3-venv \ curl sudo \
python3-dev \
sqlite3 \
git \
build-essential \
libxslt-dev \
zlib1g-dev \
libffi-dev \
libssl-dev \
uwsgi \
uwsgi-plugin-python3 \
curl \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
WORKDIR /home/perplexica WORKDIR /home/perplexica
@@ -45,28 +34,39 @@ COPY drizzle ./drizzle
RUN mkdir /home/perplexica/uploads RUN mkdir /home/perplexica/uploads
RUN useradd --system --home-dir /usr/local/searxng --shell /bin/sh searxng RUN useradd --shell /bin/bash --system \
--home-dir "/usr/local/searxng" \
WORKDIR /usr/local/searxng --comment 'Privacy-respecting metasearch engine' \
RUN git clone https://github.com/searxng/searxng.git . && \ searxng
python3 -m venv venv && \
. venv/bin/activate && \
pip install --upgrade pip setuptools wheel pyyaml && \
pip install -r requirements.txt && \
pip install uwsgi
RUN mkdir "/usr/local/searxng"
RUN mkdir -p /etc/searxng RUN mkdir -p /etc/searxng
RUN chown -R "searxng:searxng" "/usr/local/searxng"
COPY searxng/settings.yml /etc/searxng/settings.yml COPY searxng/settings.yml /etc/searxng/settings.yml
COPY searxng/limiter.toml /etc/searxng/limiter.toml COPY searxng/limiter.toml /etc/searxng/limiter.toml
COPY searxng/uwsgi.ini /etc/searxng/uwsgi.ini 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 WORKDIR /home/perplexica
COPY entrypoint.sh ./entrypoint.sh COPY entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh RUN chmod +x ./entrypoint.sh
RUN sed -i 's/\r$//' ./entrypoint.sh || true RUN sed -i 's/\r$//' ./entrypoint.sh || true
RUN echo "searxng ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
EXPOSE 3000 8080 EXPOSE 3000 8080
ENV SEARXNG_API_URL=http://localhost:8080 ENV SEARXNG_API_URL=http://localhost:8080

View File

@@ -1,24 +1,32 @@
#!/bin/sh #!/bin/sh
set -e 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..." 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 sleep 5
COUNTER=0
MAX_TRIES=30
until curl -s http://localhost:8080 > /dev/null 2>&1; do 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 sleep 1
done 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 cd /home/perplexica
echo "Starting Perplexica..." echo "Starting Perplexica..."
exec node server.js exec node server.js