File size: 3,388 Bytes
272149c f4eefc6 8b00913 272149c 8b00913 272149c 3332d19 2e28ece 272149c f4eefc6 0368056 272149c f4eefc6 8b00913 f4eefc6 272149c f4eefc6 272149c f4eefc6 4b12423 42e4abb f4eefc6 5ff99c4 272149c 3166c6e d4c00bc 272149c f4eefc6 73f54af 272149c 3bbdd38 f4eefc6 2e28ece 272149c f4eefc6 272149c 6a63010 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# Use Alpine Linux 3.19 as the base image
FROM alpine:3.19
# Set working directory within the container
WORKDIR /code
# Clone the searxng repository
RUN git clone https://github.com/searxng/searxng
# Set arguments for user and group IDs (default to 977 if not provided)
ARG SEARXNG_GID=977
ARG SEARXNG_UID=977
# Add a non-root user and group for running the application
RUN addgroup -g ${SEARXNG_GID} searxng && \
adduser -u ${SEARXNG_UID} -D -h /code/searxng -s /bin/sh -G searxng searxng
# Set environment variables for the application
ENV INSTANCE_NAME=searxng \
AUTOCOMPLETE= \
BASE_URL= \
MORTY_KEY= \
MORTY_URL= \
SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml \
UWSGI_SETTINGS_PATH=/etc/searxng/uwsgi.ini \
UWSGI_WORKERS=%k \
UWSGI_THREADS=4
# Copy requirements.txt to the working directory and install dependencies
COPY requirements.txt ./requirements.txt
RUN apk add --no-cache -t build-dependencies \
build-base \
py3-setuptools \
python3-dev \
libffi-dev \
libxslt-dev \
libxml2-dev \
openssl-dev \
tar \
git \
&& apk add --no-cache \
ca-certificates \
su-exec \
python3 \
py3-pip \
libxml2 \
libxslt \
openssl \
tini \
uwsgi \
uwsgi-python3 \
brotli \
&& pip3 install --break-system-packages --no-cache -r requirements.txt \
&& apk del build-dependencies \
&& rm -rf /root/.cache
# Copy application files and set ownership to searxng user and group
COPY --chown=searxng:searxng ./searx /code/searxng/searx
# Set build arguments for timestamps and version info
ARG TIMESTAMP_SETTINGS=0
ARG TIMESTAMP_UWSGI=0
ARG VERSION_GITCOMMIT=unknown
# Compile Python files, set timestamps, and compress static assets
RUN su searxng -c "/usr/bin/python3 -m compileall -q /code/searxng/searx" \
&& touch -c --date=@${TIMESTAMP_SETTINGS} /code/searxng/searx/settings.yml \
&& touch -c --date=@${TIMESTAMP_UWSGI} /code/searxng/dockerfiles/uwsgi.ini \
&& find /usr/local/searxng/searx/static -a \( -name '*.html' -o -name '*.css' -o -name '*.js' \
-o -name '*.svg' -o -name '*.ttf' -o -name '*.eot' \) \
-type f -exec gzip -9 -k {} \+ -exec brotli --best {} \+
# Define metadata labels for the Docker image
ARG LABEL_DATE=
ARG GIT_URL=unknown
ARG SEARXNG_GIT_VERSION=unknown
ARG SEARXNG_DOCKER_TAG=unknown
ARG LABEL_VCS_REF=
ARG LABEL_VCS_URL=
LABEL maintainer="searxng <${GIT_URL}>" \
description="A privacy-respecting, hackable metasearch engine." \
version="${SEARXNG_GIT_VERSION}" \
org.label-schema.schema-version="1.0" \
org.label-schema.name="searxng" \
org.label-schema.version="${SEARXNG_GIT_VERSION}" \
org.label-schema.url="${LABEL_VCS_URL}" \
org.label-schema.vcs-ref=${LABEL_VCS_REF} \
org.label-schema.vcs-url=${LABEL_VCS_URL} \
org.label-schema.build-date="${LABEL_DATE}" \
org.label-schema.usage="https://github.com/searxng/searxng-docker" \
org.opencontainers.image.title="searxng" \
org.opencontainers.image.version="${SEARXNG_DOCKER_TAG}" \
org.opencontainers.image.url="${LABEL_VCS_URL}" \
org.opencontainers.image.revision=${LABEL_VCS_REF} \
org.opencontainers.image.source=${LABEL_VCS_URL} \
org.opencontainers.image.created="${LABEL_DATE}" \
org.opencontainers.image.documentation="https://github.com/searxng/searxng-docker"
|