MiniSearch / Dockerfile
github-actions[bot]
Sync from https://github.com/felladrin/MiniSearch
9509f5b
Raw
History Blame Contribute Delete
2.51 kB
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"]