Browse Source

[enh] Docker image: uwsgi serves the static files directly.

When the image is built, the static files are compressed with gzip and brotli.
The expires header is set to one day (same as Flask)
There is not etag header (Flask does add an etag header)
Dalf 5 years ago
parent
commit
678d41d75b
2 changed files with 12 additions and 2 deletions
  1. 5 2
      Dockerfile
  2. 7 0
      dockerfiles/uwsgi.ini

+ 5 - 2
Dockerfile

@@ -50,6 +50,7 @@ RUN apk upgrade --no-cache \
     tini \
     tini \
     uwsgi \
     uwsgi \
     uwsgi-python3 \
     uwsgi-python3 \
+    brotli \
  && pip3 install --upgrade pip \
  && pip3 install --upgrade pip \
  && pip3 install --no-cache -r requirements.txt \
  && pip3 install --no-cache -r requirements.txt \
  && apk del build-dependencies
  && apk del build-dependencies
@@ -61,8 +62,10 @@ RUN su searx -c "/usr/bin/python3 -m compileall -q searx"; \
     touch -c --date=@${TIMESTAMP_UWSGI} dockerfiles/uwsgi.ini; \
     touch -c --date=@${TIMESTAMP_UWSGI} dockerfiles/uwsgi.ini; \
     if [ ! -z $VERSION_GITCOMMIT ]; then\
     if [ ! -z $VERSION_GITCOMMIT ]; then\
       echo "VERSION_STRING = VERSION_STRING + \"-$VERSION_GITCOMMIT\"" >> /usr/local/searx/searx/version.py; \
       echo "VERSION_STRING = VERSION_STRING + \"-$VERSION_GITCOMMIT\"" >> /usr/local/searx/searx/version.py; \
-    fi
-
+    fi; \
+    find /usr/local/searx/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 this argument at the end since it change each time
 # Keep this argument at the end since it change each time
 ARG LABEL_DATE=
 ARG LABEL_DATE=

+ 7 - 0
dockerfiles/uwsgi.ini

@@ -35,3 +35,10 @@ logto = /var/log/uwsgi/uwsgi.log
 # No keep alive
 # No keep alive
 # See https://github.com/searx/searx-docker/issues/24
 # See https://github.com/searx/searx-docker/issues/24
 add-header = Connection: close
 add-header = Connection: close
+
+# uwsgi serves the static files
+# expires set to one day as Flask does
+static-map = /static=/usr/local/searx/searx/static
+static-expires = /* 864000
+static-gzip-all = True
+offload-threads = %k