124 lines
3.5 KiB
Docker
124 lines
3.5 KiB
Docker
# syntax=docker/dockerfile:labs
|
|
|
|
FROM python:3.11-alpine AS builder
|
|
|
|
ARG PAPERLESS_VERSION=2.4.0
|
|
|
|
WORKDIR /opt
|
|
|
|
RUN set -euxo pipefail &&\
|
|
apk --no-cache add \
|
|
git \
|
|
make \
|
|
cmake \
|
|
build-base \
|
|
gfortran \
|
|
mariadb-dev \
|
|
libpq-dev \
|
|
freetype-dev \
|
|
imagemagick-dev \
|
|
libxml2-dev \
|
|
openblas-dev \
|
|
qpdf-dev \
|
|
tar \
|
|
xz \
|
|
curl \
|
|
ca-certificates \
|
|
rdfind \
|
|
&&\
|
|
curl -sSLO https://github.com/paperless-ngx/paperless-ngx/releases/download/v${PAPERLESS_VERSION}/paperless-ngx-v${PAPERLESS_VERSION}.tar.xz &&\
|
|
tar xvJf paperless-ngx-v${PAPERLESS_VERSION}.tar.xz &&\
|
|
rm paperless-ngx-v${PAPERLESS_VERSION}.tar.xz &&\
|
|
mv paperless-ngx paperless &&\
|
|
cd paperless &&\
|
|
python3 -m venv venv &&\
|
|
source venv/bin/activate &&\
|
|
pip --no-cache-dir install -r requirements.txt &&\
|
|
./src/manage.py collectstatic --no-input &&\
|
|
mkdir -p /usr/share/nltk_data &&\
|
|
python3 -c "import nltk; nltk.download('stopwords', download_dir='/usr/share/nltk_data')" &&\
|
|
python3 -c "import nltk; nltk.download('punkt', download_dir='/usr/share/nltk_data')" &&\
|
|
rdfind /opt
|
|
|
|
FROM python:3.11-alpine
|
|
MAINTAINER Daniel Berteaud <dbd@ehtrace.com>
|
|
|
|
ARG CARETAKERD_VERSION=1.0.8
|
|
|
|
ENV LANG=fr_FR.utf8 \
|
|
TZ=Europe/Paris \
|
|
PAPERLESS_MODE=all-in-one \
|
|
PATH=/opt/paperless/venv/bin:${PATH} \
|
|
PAPERLESS_REDIS=redis://127.0.0.1:6379/0 \
|
|
PAPERLESS_DBENGINE=postgresql \
|
|
PAPERLESS_DBHOST=127.0.0.1 \
|
|
PAPERLESS_DBPORT=5432 \
|
|
PAPERLESS_DBNAME=paperless \
|
|
PAPERLESS_DBUSER=paperless \
|
|
PAPERLESS_DBPASS=paperless \
|
|
PAPERLESS_CONSUMPTION_DIR=/input \
|
|
PAPERLESS_CONSUMER_POLLING=60 \
|
|
PAPERLESS_DATA_DIR=/data \
|
|
PAPERLESS_MEDIA_ROOT=/data \
|
|
PAPERLESS_TRASH_DIR=/data/trash \
|
|
PAPERLESS_ADMIN_USER=admin \
|
|
PAPERLESS_ADMIN_PASSWORD=password \
|
|
PAPERLESS_STATICDIR=/opt/paperless/static \
|
|
PAPERLESS_FILENAME_FORMAT={created_year}/{created_month}/{title} \
|
|
PAPERLESS_SECRET_KEY=changeme \
|
|
PAPERLESS_URL=https://paperless.example.org \
|
|
PAPERLESS_OCR_LANGUAGE=fra \
|
|
PAPERLESS_TIME_ZONE=Europe/Paris \
|
|
PAPERLESS_CONSUMER_DELETE_DUPLICATES=true \
|
|
PAPERLESS_CONSUMER_RECURSIVE=true \
|
|
PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=true \
|
|
PAPERLESS_CONSUMER_POLLING=60 \
|
|
PAPERLESS_WEBSERVER_WORKERS=1 \
|
|
PAPERLESS_BIND_ADDR=0.0.0.0 \
|
|
PAPERLESS_PORT=8994 \
|
|
PAPERLESS_ADMIN_USER=admin \
|
|
PAPERLESS_ADMIN_PASSWORD=admin \
|
|
PAPERLESS_ADMIN_EMAIL=admin@localhost
|
|
|
|
ADD https://git.lapiole.org/nomad/base_tools.git#master /
|
|
COPY --from=builder /opt /opt
|
|
COPY --from=builder /usr/share/nltk_data /usr/share/nltk_data
|
|
|
|
RUN set -euxo pipefail &&\
|
|
apk --no-cache add \
|
|
tini \
|
|
curl \
|
|
unpaper \
|
|
font-liberation \
|
|
tesseract-ocr \
|
|
tesseract-ocr-data-osd \
|
|
tesseract-ocr-data-eng \
|
|
tesseract-ocr-data-fra \
|
|
optipng \
|
|
libpq \
|
|
zbar \
|
|
poppler-utils \
|
|
gnupg \
|
|
imagemagick \
|
|
ghostscript \
|
|
qpdf \
|
|
leptonica \
|
|
libxml2 \
|
|
libmagic \
|
|
pngquant \
|
|
zlib \
|
|
openblas \
|
|
&&\
|
|
addgroup --gid 8994 paperless &&\
|
|
adduser --system --ingroup paperless --disabled-password --uid 8994 --home /opt/paperless --shell /sbin/nologin paperless &&\
|
|
mkdir -p /data /input &&\
|
|
chown paperless:paperless /data /input
|
|
|
|
COPY root/ /
|
|
COPY --from=danielberteaud/alpine:24.1-6 /usr/local/bin/minit /usr/local/bin/minit
|
|
|
|
EXPOSE ${PAPERLESS_PORT}
|
|
USER paperless
|
|
ENTRYPOINT ["tini", "--", "/entrypoint.sh"]
|
|
CMD ["paperless"]
|