From 1d759b75b5440c69ca1b3ac26153bb996f9c788b Mon Sep 17 00:00:00 2001 From: Jonas Winkler Date: Sat, 14 Nov 2020 12:10:38 +0100 Subject: [PATCH] getting paperless-ng ready for the first release. --- .gitignore | 4 +- Dockerfile | 8 +-- ci/deploy-docker | 15 ----- .../docker-compose.env | 0 {scripts => docker}/docker-entrypoint.sh | 0 {scripts => docker}/gunicorn.conf.py | 0 .../hub/docker-compose.sqlite.yml | 2 +- .../hub/docker-compose.yml | 2 +- {scripts => docker}/imagemagick-policy.xml | 0 docker/local/Dockerfile | 67 +++++++++++++++++++ docker/local/docker-compose.sqlite.yml | 31 +++++++++ docker/local/docker-compose.yml | 44 ++++++++++++ {scripts => docker}/supervisord.conf | 0 13 files changed, 150 insertions(+), 23 deletions(-) delete mode 100755 ci/deploy-docker rename docker-compose.env.example => docker/docker-compose.env (100%) rename {scripts => docker}/docker-entrypoint.sh (100%) rename {scripts => docker}/gunicorn.conf.py (100%) rename docker-compose.yml.sqlite.example => docker/hub/docker-compose.sqlite.yml (94%) rename docker-compose.yml.example => docker/hub/docker-compose.yml (96%) rename {scripts => docker}/imagemagick-policy.xml (100%) create mode 100644 docker/local/Dockerfile create mode 100644 docker/local/docker-compose.sqlite.yml create mode 100644 docker/local/docker-compose.yml rename {scripts => docker}/supervisord.conf (100%) diff --git a/.gitignore b/.gitignore index 4ae903ade..daef33cc8 100644 --- a/.gitignore +++ b/.gitignore @@ -65,8 +65,8 @@ target/ .virtualenv virtualenv /venv -docker-compose.env -docker-compose.yml +/docker-compose.env +/docker-compose.yml # Used for development scripts/import-for-development diff --git a/Dockerfile b/Dockerfile index 82b552b95..291cacdad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -56,10 +56,10 @@ RUN apt-get update \ # copy scripts # this fixes issues with imagemagick and PDF -COPY scripts/imagemagick-policy.xml /etc/ImageMagick-6/policy.xml -COPY scripts/gunicorn.conf.py ./ -COPY scripts/supervisord.conf /etc/supervisord.conf -COPY scripts/docker-entrypoint.sh /sbin/docker-entrypoint.sh +COPY docker/imagemagick-policy.xml /etc/ImageMagick-6/policy.xml +COPY docker/gunicorn.conf.py ./ +COPY docker/supervisord.conf /etc/supervisord.conf +COPY docker/docker-entrypoint.sh /sbin/docker-entrypoint.sh # copy app COPY src/ ./src/ diff --git a/ci/deploy-docker b/ci/deploy-docker deleted file mode 100755 index f8de0666a..000000000 --- a/ci/deploy-docker +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -if [ "${DOCKER_USERNAME}" == "" -o "${DOCKER_PASSWORD}" == "" ] -then - exit 0 -fi - -docker login --username=${DOCKER_USERNAME} --password=${DOCKER_PASSWORD} -if [ "${TRAVIS_TAG}" != "" ] -then - docker tag the-paperless-project/paperless the-paperless-project/paperless:${TRAVIS_TAG} - docker push the-paperless-project/paperless:${TRAVIS_TAG} -else - docker push the-paperless-project/paperless -fi diff --git a/docker-compose.env.example b/docker/docker-compose.env similarity index 100% rename from docker-compose.env.example rename to docker/docker-compose.env diff --git a/scripts/docker-entrypoint.sh b/docker/docker-entrypoint.sh similarity index 100% rename from scripts/docker-entrypoint.sh rename to docker/docker-entrypoint.sh diff --git a/scripts/gunicorn.conf.py b/docker/gunicorn.conf.py similarity index 100% rename from scripts/gunicorn.conf.py rename to docker/gunicorn.conf.py diff --git a/docker-compose.yml.sqlite.example b/docker/hub/docker-compose.sqlite.yml similarity index 94% rename from docker-compose.yml.sqlite.example rename to docker/hub/docker-compose.sqlite.yml index cc26dc46c..1e9f96e02 100644 --- a/docker-compose.yml.sqlite.example +++ b/docker/hub/docker-compose.sqlite.yml @@ -21,7 +21,7 @@ services: - media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./consume:/usr/src/paperless/consume - env_file: docker-compose.env + env_file: ../docker-compose.env environment: PAPERLESS_REDIS: redis://broker:6379 diff --git a/docker-compose.yml.example b/docker/hub/docker-compose.yml similarity index 96% rename from docker-compose.yml.example rename to docker/hub/docker-compose.yml index f821a6781..c535f6d9b 100644 --- a/docker-compose.yml.example +++ b/docker/hub/docker-compose.yml @@ -32,7 +32,7 @@ services: - media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./consume:/usr/src/paperless/consume - env_file: docker-compose.env + env_file: ../docker-compose.env environment: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBHOST: db diff --git a/scripts/imagemagick-policy.xml b/docker/imagemagick-policy.xml similarity index 100% rename from scripts/imagemagick-policy.xml rename to docker/imagemagick-policy.xml diff --git a/docker/local/Dockerfile b/docker/local/Dockerfile new file mode 100644 index 000000000..64e488f5e --- /dev/null +++ b/docker/local/Dockerfile @@ -0,0 +1,67 @@ +############################################################################### +### Back end ### +############################################################################### + +FROM ubuntu:20.04 + +WORKDIR /usr/src/paperless/ + +COPY Pipfile* ./ + +#Dependencies +RUN apt-get update \ + && DEBIAN_FRONTEND="noninteractive" apt-get -y --no-install-recommends install \ + build-essential \ + curl \ + ghostscript \ + gnupg \ + imagemagick \ + libmagic-dev \ + libpoppler-cpp-dev \ + libpq-dev \ + optipng \ + python3 \ + python3-dev \ + python3-pip \ + sudo \ + tesseract-ocr \ + tesseract-ocr-eng \ + tesseract-ocr-deu \ + tesseract-ocr-fra \ + tesseract-ocr-ita \ + tesseract-ocr-spa \ + tzdata \ + unpaper \ + && pip3 install --upgrade pipenv supervisor setuptools \ + && pipenv install --system --deploy \ + && pipenv --clear \ + && apt-get -y purge build-essential python3-pip python3-dev \ + && apt-get -y autoremove --purge \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir /var/log/supervisord /var/run/supervisord + +# copy scripts +# this fixes issues with imagemagick and PDF +COPY docker/imagemagick-policy.xml /etc/ImageMagick-6/policy.xml +COPY docker/gunicorn.conf.py ./ +COPY docker/supervisord.conf /etc/supervisord.conf +COPY docker/docker-entrypoint.sh /sbin/docker-entrypoint.sh + +# copy app +COPY src/ ./src/ + +# add users, setup scripts +RUN addgroup --gid 1000 paperless \ + && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless \ + && chown -R paperless:paperless . \ + && chmod 755 /sbin/docker-entrypoint.sh + +WORKDIR /usr/src/paperless/src/ + +RUN sudo -HEu paperless python3 manage.py collectstatic --clear --no-input + +VOLUME ["/usr/src/paperless/data", "/usr/src/paperless/media", "/usr/src/paperless/consume", "/usr/src/paperless/export"] +ENTRYPOINT ["/sbin/docker-entrypoint.sh"] +CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisord.conf"] + +LABEL maintainer="Jonas Winkler " diff --git a/docker/local/docker-compose.sqlite.yml b/docker/local/docker-compose.sqlite.yml new file mode 100644 index 000000000..a76401339 --- /dev/null +++ b/docker/local/docker-compose.sqlite.yml @@ -0,0 +1,31 @@ +version: "3.4" +services: + broker: + image: redis:6.0 + restart: always + + webserver: + build: . + restart: always + depends_on: + - broker + ports: + - 8000:8000 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000"] + interval: 30s + timeout: 10s + retries: 5 + volumes: + - data:/usr/src/paperless/data + - media:/usr/src/paperless/media + - ./export:/usr/src/paperless/export + - ./consume:/usr/src/paperless/consume + env_file: ../docker-compose.env + environment: + PAPERLESS_REDIS: redis://broker:6379 + + +volumes: + data: + media: diff --git a/docker/local/docker-compose.yml b/docker/local/docker-compose.yml new file mode 100644 index 000000000..792792c26 --- /dev/null +++ b/docker/local/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.4" +services: + broker: + image: redis:6.0 + restart: always + + db: + image: postgres:13 + restart: always + volumes: + - pgdata:/var/lib/postgresql/data + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + + webserver: + build: . + restart: always + depends_on: + - db + - broker + ports: + - 8000:8000 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000"] + interval: 30s + timeout: 10s + retries: 5 + volumes: + - data:/usr/src/paperless/data + - media:/usr/src/paperless/media + - ./export:/usr/src/paperless/export + - ./consume:/usr/src/paperless/consume + env_file: ../docker-compose.env + environment: + PAPERLESS_REDIS: redis://broker:6379 + PAPERLESS_DBHOST: db + + +volumes: + data: + media: + pgdata: diff --git a/scripts/supervisord.conf b/docker/supervisord.conf similarity index 100% rename from scripts/supervisord.conf rename to docker/supervisord.conf