diff --git a/Dockerfile b/Dockerfile index 9dd440996..e23429d3d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,6 @@ ENV \ S6_BEHAVIOUR_IF_STAGE2_FAILS=2 \ S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ S6_VERBOSITY=1 \ - UV_LINK_MODE=copy \ PATH=/command:$PATH # Buildx provided, must be defined to use though @@ -86,7 +85,7 @@ COPY ./docker/rootfs / # Purpose: The final image # Comments: # - Don't leave anything extra in here -FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS main-app +FROM s6-overlay-base AS main-app LABEL org.opencontainers.image.authors="paperless-ngx team " LABEL org.opencontainers.image.documentation="https://docs.paperless-ngx.com/" @@ -110,6 +109,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ # Ignore warning from Whitenoise PYTHONWARNINGS="ignore:::django.http.response:517" \ PNGX_CONTAINERIZED=1 \ + UV_LINK_MODE=copy \ PATH="/usr/src/paperless/src/.venv/bin:$PATH" # @@ -227,6 +227,7 @@ RUN --mount=type=cache,target=/root/.cache/uv,id=pip-cache \ https://github.com/paperless-ngx/builder/releases/download/zxing-${ZXING_VERSION}/zxing_cpp-${ZXING_VERSION}-cp312-cp312-linux_aarch64.whl \ https://github.com/paperless-ngx/builder/releases/download/zxing-${ZXING_VERSION}/zxing_cpp-${ZXING_VERSION}-cp312-cp312-linux_x86_64.whl \ && uv sync --no-progress --frozen --no-dev --no-python-downloads --python-preference system --find-links . \ + && chown -R 1000:1000 .venv \ && echo "Installing NLTK data" \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords \ diff --git a/pyproject.toml b/pyproject.toml index 3df820257..b946cd212 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,10 +32,13 @@ dependencies = [ "django-soft-delete~=1.0.15", "djangorestframework~=3.15", "djangorestframework-guardian~=0.3.0", + "drf-spectacular>=0.28", + "drf-spectacular-sidecar>=2025.2.1", "drf-writable-nested~=0.7.0", "filelock~=3.16.1", "flower~=2.0.1", "gotenberg-client~=0.6.0", + "granian>=1.7.6", "httpx-oauth~=0.15", "imap-tools~=1.7.3", "inotifyrecursive~=0.3", @@ -63,24 +66,11 @@ dependencies = [ "whitenoise~=6.7", "whoosh~=2.7", "zxing-cpp~=2.2.0", - "jinja2>=3.1.4", - "drf_spectacular>=0.28.0", - "drf-spectacular-sidecar>=2025.2.1", - "granian>=1.7.6", ] -optional-dependencies.supervisor = [ - "supervisor==4.2.5", -] +[dependency-groups] -[tool.uv] -package = false -dev-dependencies = [ - # Linting - "pre-commit~=4.0.0", - "pre-commit-uv~=4.1.3", - "ruff~=0.6.9", - # Testing +test = [ "factory-boy~=3.3.1", "pytest~=8.3.3", "pytest-cov~=5.0.0", @@ -93,10 +83,21 @@ dev-dependencies = [ "pytest-rerunfailures", "imagehash", "daphne", - # Documentation +] + +lint = [ + "pre-commit~=4.0.0", + "pre-commit-uv~=4.1.3", + "ruff~=0.9.9", +] + +docs = [ "mkdocs-material", "mkdocs-glightbox", ] + +[tool.uv] +package = false environments = [ "sys_platform == 'darwin'", "sys_platform == 'linux'",