mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-10-24 16:08:15 +00:00
feat(docker): update searxng build script
This commit is contained in:
52
Dockerfile
52
Dockerfile
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user