# Global build arguments. Stages using UID/GID must redeclare them
# (bare `ARG UID`) to bring them into scope; the defaults are set here.
-ARG PYTHON_IMAGE=python:3.9-trixie
+ARG PYTHON_IMAGE=python:3.10-trixie
ARG UID=8100
ARG GID=8100
texlive-fonts-extra-links \
fonts-noto-core fonts-noto-extra
+# Install dart-sass for compiling SCSS.
+ARG DART_SASS_VERSION=1.108.1
+RUN arch=$(dpkg --print-architecture | sed 's/amd64/x64/') && \
+ curl -fsSL "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-${arch}.tar.gz" \
+ | tar xz -C /opt
COPY requirements/requirements.txt requirements.txt
-RUN pip install --no-cache-dir -r requirements.txt
-RUN pip install --no-cache-dir \
+RUN --mount=type=cache,target=/root/.cache/pip \
+ pip install -r requirements.txt
+RUN --mount=type=cache,target=/root/.cache/pip \
+ pip install \
psycopg2-binary \
django-debug-toolbar==3.2.2
USER root
-RUN pip install --no-cache-dir gunicorn
+RUN --mount=type=cache,target=/root/.cache/pip \
+ pip install gunicorn
USER app
USER root
COPY requirements/requirements-test.txt /tmp/
-RUN pip install --no-cache-dir -r /tmp/requirements-test.txt
+RUN --mount=type=cache,target=/root/.cache/pip \
+ pip install -r /tmp/requirements-test.txt
USER app
RUN mkdir -p /app/var/counters
COPY --from=static-builder /app/var/static/staticfiles.json /app/var/static/staticfiles.json