Spaces:
Running
Running
| FROM node:lts | |
| ARG SEARXNG_COMMIT_SHA="6da6eee265daeb4a62ab638d6921522bf405de69" | |
| ENV PORT=7860 | |
| EXPOSE $PORT | |
| ARG USERNAME=node | |
| ARG HOME_DIR=/home/${USERNAME} | |
| ARG APP_DIR=${HOME_DIR}/app | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| python3 \ | |
| python3-venv && \ | |
| apt-get clean && \ | |
| rm -rf /var/lib/apt/lists/* | |
| RUN mkdir -p /usr/local/searxng /etc/searxng && \ | |
| chown -R ${USERNAME}:${USERNAME} /usr/local/searxng /etc/searxng && \ | |
| chmod 755 /etc/searxng | |
| WORKDIR /usr/local/searxng | |
| RUN python3 -m venv searxng-venv && \ | |
| chown -R ${USERNAME}:${USERNAME} /usr/local/searxng/searxng-venv && \ | |
| /usr/local/searxng/searxng-venv/bin/pip install --upgrade pip && \ | |
| /usr/local/searxng/searxng-venv/bin/pip install wheel setuptools pyyaml lxml | |
| RUN git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src && \ | |
| git -C /usr/local/searxng/searxng-src checkout $SEARXNG_COMMIT_SHA && \ | |
| chown -R ${USERNAME}:${USERNAME} /usr/local/searxng/searxng-src | |
| ARG SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml" | |
| COPY --chown=${USERNAME}:${USERNAME} searxng-settings.yml $SEARXNG_SETTINGS_PATH | |
| WORKDIR /usr/local/searxng/searxng-src | |
| RUN chmod 644 $SEARXNG_SETTINGS_PATH && \ | |
| sed -i 's/ultrasecretkey/'$(openssl rand -hex 32)'/g' $SEARXNG_SETTINGS_PATH && \ | |
| /usr/local/searxng/searxng-venv/bin/pip install -r requirements.txt && \ | |
| /usr/local/searxng/searxng-venv/bin/pip install --no-build-isolation -e . | |
| USER ${USERNAME} | |
| WORKDIR ${APP_DIR} | |
| COPY --chown=${USERNAME}:${USERNAME} ./package.json ./package-lock.json ./.npmrc ./ | |
| RUN npm ci | |
| COPY --chown=${USERNAME}:${USERNAME} . . | |
| # The commit hash is optional build metadata, so a build context without a | |
| # usable repository must not fail the build. This happens when building from a | |
| # git worktree, where `.git` is a file pointing at a gitdir outside the context; | |
| # git then treats every command as fatal, including `config --global`. | |
| RUN git config --global --add safe.directory ${APP_DIR} 2>/dev/null || true; \ | |
| git rev-parse --short HEAD >/dev/null 2>&1 || \ | |
| echo "WARNING: no usable git repository in the build context, so the app will report an empty commit hash."; \ | |
| npm run build | |
| HEALTHCHECK --start-period=60s --interval=30s --timeout=10s --retries=3 CMD curl -fsS http://localhost:${PORT}/status || exit 1 | |
| ENTRYPOINT [ "/bin/sh", "-c" ] | |
| CMD ["(cd /usr/local/searxng/searxng-src && /usr/local/searxng/searxng-venv/bin/python -m searx.webapp > /dev/null 2>&1) & npm start -- --host"] | |