running now

This commit is contained in:
Philipp
2024-06-14 21:19:35 +00:00
parent 900afb3db2
commit 8dc8d6143d
4 changed files with 111 additions and 70 deletions

View File

@@ -12,13 +12,13 @@ COPY ./src-ui /src/src-ui
WORKDIR /src/src-ui WORKDIR /src/src-ui
RUN set -eux \ RUN set -eux \
&& npm update npm -g \ && npm update npm -g \
&& npm ci --omit=optional && npm ci
RUN set -eux \ RUN set -eux \
&& ./node_modules/.bin/ng build --configuration production && ./node_modules/.bin/ng build --configuration production
# Stage: main-app # Stage: main-app
# Purpose: The final image # Purpose: The final image
FROM docker.io/python:3.11-bookworm as main-app FROM --platform=$BUILDPLATFORM docker.io/node:20-bookworm-slim as main-app
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
@@ -27,8 +27,15 @@ ARG TARGETARCH
# Can be workflow provided, defaults set for manual building # Can be workflow provided, defaults set for manual building
ARG JBIG2ENC_VERSION=0.29 ARG JBIG2ENC_VERSION=0.29
ARG QPDF_VERSION=11.6.3 ARG QPDF_VERSION=11.9.0
ARG GS_VERSION=10.02.0 ARG GS_VERSION=10.03.1
# Set Python environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
# Ignore warning from Whitenoise
PYTHONWARNINGS="ignore:::django.http.response:517" \
PNGX_CONTAINERIZED=1
# #
# Begin installation and configuration # Begin installation and configuration
@@ -51,7 +58,6 @@ ARG RUNTIME_PACKAGES="\
icc-profiles-free \ icc-profiles-free \
imagemagick \ imagemagick \
# PostgreSQL # PostgreSQL
libpq5 \
postgresql-client \ postgresql-client \
# MySQL / MariaDB # MySQL / MariaDB
mariadb-client \ mariadb-client \
@@ -77,47 +83,58 @@ ARG RUNTIME_PACKAGES="\
zlib1g \ zlib1g \
# Barcode splitter # Barcode splitter
libzbar0 \ libzbar0 \
poppler-utils" poppler-utils \
htop \
# Install Pipenv sudo"
RUN set -eux \
&& echo "Installing pipenv" \
&& python3 -m pip install --no-cache-dir --upgrade pipenv==2023.10.24
# Install basic runtime packages. # Install basic runtime packages.
# These change very infrequently # These change very infrequently
RUN set -eux \ RUN set -eux \
echo "Installing system packages" \ echo "Installing system packages" \
&& apt-get update \ && apt-get update \
&& apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} \ && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES}
&& echo "Installing pre-built updates" \
&& echo "Installing qpdf ${QPDF_VERSION}" \ ARG PYTHON_PACKAGES="\
&& curl --fail --silent --show-error --location \ python3 \
--output libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ python3-pip \
https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ python3-wheel \
&& curl --fail --silent --show-error --location \ pipenv \
--output qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ ca-certificates"
https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \
&& dpkg --install ./libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ RUN set -eux \
&& dpkg --install ./qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ echo "Installing python packages" \
&& echo "Installing Ghostscript ${GS_VERSION}" \ && apt-get update \
&& curl --fail --silent --show-error --location \ && apt-get install --yes --quiet ${PYTHON_PACKAGES}
--output libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \
https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ RUN set -eux \
&& curl --fail --silent --show-error --location \ && echo "Installing pre-built updates" \
--output ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ && echo "Installing qpdf ${QPDF_VERSION}" \
https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ && curl --fail --silent --show-error --location \
&& curl --fail --silent --show-error --location \ --output libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \
--output libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \
https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ && curl --fail --silent --show-error --location \
&& dpkg --install ./libgs10-common_${GS_VERSION}.dfsg-2_all.deb \ --output qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \
&& dpkg --install ./libgs10_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \
&& dpkg --install ./ghostscript_${GS_VERSION}.dfsg-2_${TARGETARCH}.deb \ && dpkg --install ./libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \
&& echo "Installing jbig2enc" \ && dpkg --install ./qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \
&& curl --fail --silent --show-error --location \ && echo "Installing Ghostscript ${GS_VERSION}" \
--output jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ && curl --fail --silent --show-error --location \
https://github.com/paperless-ngx/builder/releases/download/jbig2enc-${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ --output libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
&& dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
&& curl --fail --silent --show-error --location \
--output ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
&& curl --fail --silent --show-error --location \
--output libgs10-common_${GS_VERSION}.dfsg-1_all.deb \
https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10-common_${GS_VERSION}.dfsg-1_all.deb \
&& dpkg --install ./libgs10-common_${GS_VERSION}.dfsg-1_all.deb \
&& dpkg --install ./libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
&& dpkg --install ./ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \
&& echo "Installing jbig2enc" \
&& curl --fail --silent --show-error --location \
--output jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \
https://github.com/paperless-ngx/builder/releases/download/jbig2enc-${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \
&& dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb
# setup docker-specific things # setup docker-specific things
# These change sometimes, but rarely # These change sometimes, but rarely
@@ -128,7 +145,7 @@ COPY [ \
"docker/wait-for-redis.py", \ "docker/wait-for-redis.py", \
"docker/env-from-file.sh", \ "docker/env-from-file.sh", \
"docker/flower-conditional.sh", \ "docker/flower-conditional.sh", \
"/usr/src/paperless/src/docker/" \ "./" \
] ]
RUN set -eux \ RUN set -eux \
@@ -151,18 +168,17 @@ ARG BUILD_PACKAGES="\
libpq-dev \ libpq-dev \
# https://github.com/PyMySQL/mysqlclient#linux # https://github.com/PyMySQL/mysqlclient#linux
default-libmysqlclient-dev \ default-libmysqlclient-dev \
pkg-config" pkg-config \
pre-commit"
# hadolint ignore=DL3042 # hadolint ignore=DL3042
RUN --mount=type=cache,target=/root/.cache/pip/,id=pip-cache \ RUN --mount=type=cache,target=/root/.cache/pip/,id=pip-cache \
set -eux \ set -eux \
&& echo "Installing build system packages" \ && echo "Installing build system packages" \
&& apt-get update \ && apt-get update \
&& apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \ && apt-get install --yes --quiet ${BUILD_PACKAGES}
&& python3 -m pip install --no-cache-dir --upgrade wheel
WORKDIR /usr/src/paperless/paperless-ngx/
WORKDIR /usr/src/paperless/paperless/
# copy frontend # copy frontend
COPY --from=compile-frontend --chown=1000:1000 /src/src/documents/static ./static COPY --from=compile-frontend --chown=1000:1000 /src/src/documents/static ./static
@@ -171,22 +187,23 @@ COPY --from=compile-frontend --chown=1000:1000 /src/src/documents/static ./stati
# Mount the compiled frontend to expected location # Mount the compiled frontend to expected location
RUN set -eux \ RUN set -eux \
&& echo "Setting up user/group" \ && echo "Setting up user/group" \
&& addgroup --gid 1000 paperless \ && groupmod --new-name paperless node \
&& useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \ && usermod --login paperless --home /usr/src/paperless node \
&& usermod -s /bin/bash paperless \ && usermod -s /bin/bash paperless \
&& echo "Creating volume directories" \ && echo "Creating volume directories" \
&& mkdir --parents --verbose /usr/src/paperless/data \ && mkdir --parents --verbose /usr/src/paperless/paperless-ngx/data \
&& mkdir --parents --verbose /usr/src/paperless/media \ && mkdir --parents --verbose /usr/src/paperless/paperless-ngx/media \
&& mkdir --parents --verbose /usr/src/paperless/consume \ && mkdir --parents --verbose /usr/src/paperless/paperless-ngx/consume \
&& mkdir --parents --verbose /usr/src/paperless/export \ && mkdir --parents --verbose /usr/src/paperless/paperless-ngx/export \
&& mkdir --parents --verbose /usr/src/paperless/paperless/.venv \ && mkdir --parents --verbose /usr/src/paperless/paperless-ngx/.venv \
&& echo "Adjusting all permissions" \ && echo "Adjusting all permissions" \
&& chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless
# && echo "Collecting static files" \ # && echo "Collecting static files" \
# && gosu paperless python3 manage.py collectstatic --clear --no-input --link \ # && gosu paperless python3 manage.py collectstatic --clear --no-input --link \
# && gosu paperless python3 manage.py compilemessages # && gosu paperless python3 manage.py compilemessages
VOLUME ["/usr/src/paperless/data", \ VOLUME ["/usr/src/paperless/paperless-ngx/data", \
"/usr/src/paperless/media", \ "/usr/src/paperless/paperless-ngx/media", \
"/usr/src/paperless/consume", \ "/usr/src/paperless/paperless-ngx/consume", \
"/usr/src/paperless/export"] "/usr/src/paperless/paperless-ngx/export", \
"/usr/src/paperless/paperless-ngx/.venv"]

View File

@@ -2,11 +2,15 @@
"name": "Paperless Development", "name": "Paperless Development",
"dockerComposeFile": "docker-compose.devcontainer.sqlite-tika.yml", "dockerComposeFile": "docker-compose.devcontainer.sqlite-tika.yml",
"service": "paperless-development", "service": "paperless-development",
"workspaceFolder": "/usr/src/paperless/paperless", "workspaceFolder": "/usr/src/paperless/paperless-ngx",
"postCreateCommand": "/bin/bash -c pre-commit install && pipenv install --dev", "postCreateCommand": "/bin/bash -c pre-commit install && pipenv install --dev",
"extensions": [ "customizations": {
"mhutchie.git-graph", "vscode": {
"ms-python.python" "extensions": [
], "mhutchie.git-graph",
"ms-python.python"
]
}
},
"remoteUser": "paperless" "remoteUser": "paperless"
} }

View File

@@ -50,14 +50,16 @@ services:
- gotenberg - gotenberg
- tika - tika
volumes: volumes:
- ..:/usr/src/paperless/paperless:cached - ..:/usr/src/paperless/paperless-ngx:delegated
- ../.devcontainer/vscode:/usr/src/paperless/paperless/.vscode # vscode config files - ../.devcontainer/vscode:/usr/src/paperless/paperless-ngx/.vscode:delegated # vscode config files
- pipenv:/usr/src/paperless/paperless/.venv # pipenv environment persisted in volume - pipenv:/usr/src/paperless/paperless-ngx/.venv # pipenv environment persisted in volume
- /usr/src/paperless/paperless/static/frontend # static frontend files exist only in container - /usr/src/paperless/paperless-ngx/static/frontend # static frontend files exist only in container
- data:/usr/src/paperless/data - /usr/src/paperless/paperless-ngx/src/.pytest_cache
- media:/usr/src/paperless/media - /usr/src/paperless/paperless-ngx/.ruff_cache
- ./export:/usr/src/paperless/export - /usr/src/paperless/paperless-ngx/htmlcov
- ./consume:/usr/src/paperless/consume - /usr/src/paperless/paperless-ngx/.coverage
- data:/usr/src/paperless/paperless-ngx/data
- media:/usr/src/paperless/paperless-ngx/media
environment: environment:
PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_TIKA_ENABLED: 1 PAPERLESS_TIKA_ENABLED: 1

View File

@@ -56,6 +56,24 @@
"cwd": "${workspaceFolder}/src" "cwd": "${workspaceFolder}/src"
} }
}, },
{
"label": "Maintenance: recreate .venv",
"type": "shell",
"command": "rm -R -v .venv/* && pipenv install --dev",
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true,
"revealProblems": "onProblem"
},
"options": {
"cwd": "${workspaceFolder}"
}
},
{ {
"label": "Celery Worker", "label": "Celery Worker",
"type": "shell", "type": "shell",