X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/2f63ddbb8cb9d393f99a03ee057291d23c6655de..111a23185d6f47f692540fb145dc5604c47aee67:/Dockerfile diff --git a/Dockerfile b/Dockerfile index 7d4c87540..d9a71d9b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # 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.12-trixie ARG UID=8100 ARG GID=8100 @@ -40,13 +40,16 @@ RUN apt-get update && apt-get install -y \ 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 \ - psycopg2-binary \ - django-debug-toolbar==3.2.2 +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install -r requirements.txt RUN addgroup --gid $GID app && \ adduser --gid $GID --home /app --uid $UID app @@ -73,7 +76,8 @@ FROM deps AS app USER root -RUN pip install --no-cache-dir gunicorn +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install gunicorn USER app @@ -89,6 +93,11 @@ COPY src /app/src # FROM app AS static-builder +# django-pipeline compiler creates temp dirs in place. Let it. +USER root +RUN find /app/src/*/static -type d -exec chown app {} + +USER app + RUN python manage.py collectstatic --noinput @@ -156,7 +165,8 @@ FROM app AS test 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