From 243dad59bbb576bdf1eeb17a74af09d73bdbbb17 Mon Sep 17 00:00:00 2001 From: Martin Frost Date: Fri, 3 Apr 2026 20:51:13 +0200 Subject: [PATCH 1/3] Set a valid timezone "CET" is not a valid timezone all year around. "Europe/Stockholm" is. --- app/fingerweb/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/fingerweb/settings.py b/app/fingerweb/settings.py index d962ff2..d492dc3 100644 --- a/app/fingerweb/settings.py +++ b/app/fingerweb/settings.py @@ -131,7 +131,7 @@ LANGUAGE_CODE = "en-gb" -TIME_ZONE = "CET" +TIME_ZONE = "Europe/Stockholm" USE_I18N = True From 59c35933fabca3476c827dde98b3313ee4598e1e Mon Sep 17 00:00:00 2001 From: Martin Frost Date: Fri, 3 Apr 2026 20:52:01 +0200 Subject: [PATCH 2/3] Upgrade psycopg2-binary This newer version has ready-built wheel packages for Python 3.10, so we won't need to have gcc installed in our production runner image. --- app/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/requirements.txt b/app/requirements.txt index 0a4a213..7009a4b 100644 --- a/app/requirements.txt +++ b/app/requirements.txt @@ -7,6 +7,6 @@ django-static-precompiler ~= 1.8.2 markdown ~= 3.1.1 gunicorn ~= 19.9.0 django-environ ~= 0.4.5 -psycopg2-binary ~= 2.8.3 +psycopg2-binary ~= 2.9.11 python-dateutil ~= 2.8.0 django-post_office ~= 3.5.2 From e2e1760683f79b95d8dd275ed54a282977d01073 Mon Sep 17 00:00:00 2001 From: Martin Frost Date: Fri, 3 Apr 2026 20:54:20 +0200 Subject: [PATCH 3/3] Base docker image off of python-slim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will shrink the size of the resulting image significantly. In the `master` branch currently, the image is around 1.2 GB, while this build clocks in at 300MB. See details below: ``` $ docker image ls|grep --color=never git.stacken.kth.se/stacken/fingerweb git.stacken.kth.se/stacken/fingerweb python-slim 76804258796a 4 minutes ago 300MB git.stacken.kth.se/stacken/fingerweb master ecff86210fea 29 minutes ago 1.2GB ``` The image in `master`: ``` % docker image history git.stacken.kth.se/stacken/fingerweb:master IMAGE CREATED CREATED BY SIZE COMMENT ecff86210fea 32 minutes ago CMD ["/bin/sh" "-c" "/app/entrypoint.sh"] 0B buildkit.dockerfile.v0 32 minutes ago ADD entrypoint.sh /app/entrypoint.sh # build… 310B buildkit.dockerfile.v0 32 minutes ago ADD conf/nginx.conf /etc/nginx/nginx.conf # … 728B buildkit.dockerfile.v0 32 minutes ago RUN /bin/sh -c sed -i "s/XXX_BUILD_DATE_XXX/… 4.17kB buildkit.dockerfile.v0 32 minutes ago WORKDIR /app 0B buildkit.dockerfile.v0 32 minutes ago RUN /bin/sh -c pip install -r /app/requireme… 50.2MB buildkit.dockerfile.v0 32 minutes ago COPY --chown=finger /app /app # buildkit 1.45MB buildkit.dockerfile.v0 33 hours ago RUN /bin/sh -c apt-get update && apt-get -y… 57.3MB buildkit.dockerfile.v0 33 hours ago RUN /bin/sh -c adduser --no-create-home --ge… 4.49kB buildkit.dockerfile.v0 33 hours ago EXPOSE map[8080/tcp:{}] 0B buildkit.dockerfile.v0 2 weeks ago CMD ["python3"] 0B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; for src in idle3 p… 36B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; wget -O python.ta… 55.7MB buildkit.dockerfile.v0 2 weeks ago ENV PYTHON_SHA256=de6517421601e39a9a3bc3e1bc… 0B buildkit.dockerfile.v0 2 weeks ago ENV PYTHON_VERSION=3.10.20 0B buildkit.dockerfile.v0 2 weeks ago ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8… 0B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 17.8MB buildkit.dockerfile.v0 2 weeks ago ENV LANG=C.UTF-8 0B buildkit.dockerfile.v0 2 weeks ago ENV PATH=/usr/local/bin:/usr/local/sbin:/usr… 0B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -ex; apt-get update; ap… 656MB buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 185MB buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 60.2MB buildkit.dockerfile.v0 2 weeks ago # debian.sh --arch 'amd64' out/ 'trixie' '@1… 120MB debuerreotype 0.17 ``` The image for this commit: ``` % docker image history git.stacken.kth.se/stacken/fingerweb:python-slim IMAGE CREATED CREATED BY SIZE COMMENT 76804258796a 6 minutes ago CMD ["/bin/sh" "-c" "/app/entrypoint.sh"] 0B buildkit.dockerfile.v0 6 minutes ago ADD entrypoint.sh /app/entrypoint.sh # build… 310B buildkit.dockerfile.v0 6 minutes ago ADD conf/nginx.conf /etc/nginx/nginx.conf # … 728B buildkit.dockerfile.v0 6 minutes ago RUN /bin/sh -c sed -i "s/XXX_BUILD_DATE_XXX/… 4.17kB buildkit.dockerfile.v0 6 minutes ago WORKDIR /app 0B buildkit.dockerfile.v0 6 minutes ago RUN /bin/sh -c pip install -r /app/requireme… 63.8MB buildkit.dockerfile.v0 7 minutes ago COPY --chown=finger /app /app # buildkit 1.45MB buildkit.dockerfile.v0 8 minutes ago RUN /bin/sh -c apt-get update && apt-get -y… 113MB buildkit.dockerfile.v0 2 hours ago RUN /bin/sh -c adduser --no-create-home --ge… 4.45kB buildkit.dockerfile.v0 2 hours ago EXPOSE map[8080/tcp:{}] 0B buildkit.dockerfile.v0 2 weeks ago CMD ["python3"] 0B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; for src in idle3 p… 36B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; savedAptMark="$(a… 39.4MB buildkit.dockerfile.v0 2 weeks ago ENV PYTHON_SHA256=de6517421601e39a9a3bc3e1bc… 0B buildkit.dockerfile.v0 2 weeks ago ENV PYTHON_VERSION=3.10.20 0B buildkit.dockerfile.v0 2 weeks ago ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8… 0B buildkit.dockerfile.v0 2 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 3.81MB buildkit.dockerfile.v0 2 weeks ago ENV LANG=C.UTF-8 0B buildkit.dockerfile.v0 2 weeks ago ENV PATH=/usr/local/bin:/usr/local/sbin:/usr… 0B buildkit.dockerfile.v0 2 weeks ago # debian.sh --arch 'amd64' out/ 'trixie' '@1… 78.6MB debuerreotype 0.17 ``` --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 67a0833..4e1ab68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # # Launch a build container so we do not need to care about junk in the production image # -FROM python:3.10 AS build +FROM python:3.10-slim AS build # This is needed to start the Django app ARG SECRET_KEY=none @@ -10,7 +10,7 @@ ARG DATABASE_URL=sqlite:///db.sqlite3 # Install sass RUN apt-get update -RUN apt-get -y install ruby-sass +RUN apt-get -y install ruby-sass build-essential postgresql-client # Deploy files and install requirements ADD app/requirements.txt /app/requirements.txt @@ -34,13 +34,13 @@ RUN rm db.sqlite3 # # The production container # -FROM python:3.10 +FROM python:3.10-slim EXPOSE 8080 RUN adduser --no-create-home --gecos FALSE --disabled-password finger RUN apt-get update \ - && apt-get -y install nginx ruby-sass \ + && apt-get -y install nginx ruby-sass postgresql-client \ && rm -rf /var/lib/apt/lists/* COPY --from=build --chown=finger /app /app