mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	chore: update dockers files
This commit is contained in:
		
							parent
							
								
									cdd4b8e8f6
								
							
						
					
					
						commit
						f6a817664e
					
				
					 2 changed files with 39 additions and 86 deletions
				
			
		
							
								
								
									
										123
									
								
								Dockerfile
									
										
									
									
									
								
							
							
						
						
									
										123
									
								
								Dockerfile
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,96 +1,49 @@
 | 
			
		|||
FROM alpine:3.20
 | 
			
		||||
ENTRYPOINT ["/sbin/tini","--","/usr/local/searxng/dockerfiles/docker-entrypoint.sh"]
 | 
			
		||||
EXPOSE 8080
 | 
			
		||||
VOLUME /etc/searxng
 | 
			
		||||
 | 
			
		||||
ARG SEARXNG_GID=977
 | 
			
		||||
ARG SEARXNG_UID=977
 | 
			
		||||
FROM python:3.9-slim
 | 
			
		||||
 | 
			
		||||
RUN addgroup -g ${SEARXNG_GID} searxng && \
 | 
			
		||||
    adduser -u ${SEARXNG_UID} -D -h /usr/local/searxng -s /bin/sh -G searxng searxng
 | 
			
		||||
# Install necessary system dependencies
 | 
			
		||||
RUN apt-get update && apt-get install -y \
 | 
			
		||||
    python3-dev \
 | 
			
		||||
    python3-babel \
 | 
			
		||||
    python3-venv \
 | 
			
		||||
    uwsgi \
 | 
			
		||||
    uwsgi-plugin-python3 \
 | 
			
		||||
    git \
 | 
			
		||||
    build-essential \
 | 
			
		||||
    libxslt-dev \
 | 
			
		||||
    zlib1g-dev \
 | 
			
		||||
    libffi-dev \
 | 
			
		||||
    libssl-dev && \
 | 
			
		||||
    apt-get clean && rm -rf /var/lib/apt/lists/*
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
# Create user and directory structure
 | 
			
		||||
RUN useradd --shell /bin/bash --system --home-dir /usr/local/searxng --comment 'Privacy-respecting metasearch engine' searxng && \
 | 
			
		||||
    mkdir -p /usr/local/searxng && \
 | 
			
		||||
    chown -R searxng:searxng /usr/local/searxng
 | 
			
		||||
 | 
			
		||||
# Switch to non-root user
 | 
			
		||||
USER searxng
 | 
			
		||||
 | 
			
		||||
# Set working directory
 | 
			
		||||
WORKDIR /usr/local/searxng
 | 
			
		||||
 | 
			
		||||
COPY requirements.txt ./requirements.txt
 | 
			
		||||
# Clone SearXNG repository
 | 
			
		||||
RUN git clone https://github.com/searxng/searxng /usr/local/searxng/searxng-src
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
    python3 \
 | 
			
		||||
    py3-pip \
 | 
			
		||||
    libxml2 \
 | 
			
		||||
    libxslt \
 | 
			
		||||
    openssl \
 | 
			
		||||
    tini \
 | 
			
		||||
    uwsgi \
 | 
			
		||||
    uwsgi-python3 \
 | 
			
		||||
    brotli
 | 
			
		||||
# Set up Python virtual environment
 | 
			
		||||
RUN python3 -m venv /usr/local/searxng/searx-pyenv && \
 | 
			
		||||
    echo "source /usr/local/searxng/searx-pyenv/bin/activate" >> ~/.bashrc
 | 
			
		||||
 | 
			
		||||
# For 32bit arm architecture install pydantic from the alpine repos instead of requirements.txt
 | 
			
		||||
ARG TARGETARCH
 | 
			
		||||
RUN if [ "$TARGETARCH" = "arm" ]; then \
 | 
			
		||||
        apk add --no-cache py3-pydantic && pip install --no-cache --break-system-packages -r <(grep -v '^pydantic' requirements.txt); \
 | 
			
		||||
    else \
 | 
			
		||||
        pip install --no-cache --break-system-packages -r requirements.txt; \
 | 
			
		||||
    fi
 | 
			
		||||
 RUN apk del build-dependencies \
 | 
			
		||||
 && rm -rf /root/.cache
 | 
			
		||||
# Activate virtual environment and install dependencies
 | 
			
		||||
RUN /usr/local/searxng/searx-pyenv/bin/pip install -U pip setuptools wheel pyyaml && \
 | 
			
		||||
    cd /usr/local/searxng/searxng-src && \
 | 
			
		||||
    /usr/local/searxng/searx-pyenv/bin/pip install --use-pep517 --no-build-isolation -r /app/requirements.txt
 | 
			
		||||
 | 
			
		||||
COPY --chown=searxng:searxng dockerfiles ./dockerfiles
 | 
			
		||||
COPY --chown=searxng:searxng searx ./searx
 | 
			
		||||
# Install additional dependencies
 | 
			
		||||
RUN /usr/local/searxng/searx-pyenv/bin/pip install uwsgi
 | 
			
		||||
 | 
			
		||||
ARG TIMESTAMP_SETTINGS=0
 | 
			
		||||
ARG TIMESTAMP_UWSGI=0
 | 
			
		||||
ARG VERSION_GITCOMMIT=unknown
 | 
			
		||||
# Expose the port
 | 
			
		||||
EXPOSE 8888
 | 
			
		||||
 | 
			
		||||
RUN su searxng -c "/usr/bin/python3 -m compileall -q searx" \
 | 
			
		||||
 && touch -c --date=@${TIMESTAMP_SETTINGS} searx/settings.yml \
 | 
			
		||||
 && touch -c --date=@${TIMESTAMP_UWSGI} 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 {} \+
 | 
			
		||||
 | 
			
		||||
# Keep these arguments at the end to prevent redundant layer rebuilds
 | 
			
		||||
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"
 | 
			
		||||
# Start the application
 | 
			
		||||
CMD ["sh", "-c", "source /usr/local/searxng/searx-pyenv/bin/activate && python searx/webapp.py"]
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue