From 42c196c2c0dcbed0101d653e0ed67a3dfc3f1808 Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:17:21 +0200
Subject: [PATCH 01/12] refactor(compose): 4 spaces indentation

---
 .../compose/docker-compose.postgres-tika.yml  | 114 +++++++++---------
 1 file changed, 57 insertions(+), 57 deletions(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index a451b00d..7423be72 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -32,67 +32,67 @@
 
 version: "3.4"
 services:
-  broker:
-    image: docker.io/library/redis:7
-    restart: unless-stopped
-    volumes:
-      - redisdata:/data
+    broker:
+        image: docker.io/library/redis:7
+        restart: unless-stopped
+        volumes:
+            - redisdata:/data
 
-  db:
-    image: docker.io/library/postgres:13
-    restart: unless-stopped
-    volumes:
-      - pgdata:/var/lib/postgresql/data
-    environment:
-      POSTGRES_DB: paperless
-      POSTGRES_USER: paperless
-      POSTGRES_PASSWORD: paperless
+    db:
+        image: docker.io/library/postgres:13
+        restart: unless-stopped
+        volumes:
+            - pgdata:/var/lib/postgresql/data
+        environment:
+            POSTGRES_DB: paperless
+            POSTGRES_USER: paperless
+            POSTGRES_PASSWORD: paperless
 
-  webserver:
-    image: ghcr.io/paperless-ngx/paperless-ngx:latest
-    restart: unless-stopped
-    depends_on:
-      - db
-      - broker
-      - gotenberg
-      - tika
-    ports:
-      - "8000:8000"
-    healthcheck:
-      test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "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
-      PAPERLESS_TIKA_ENABLED: 1
-      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
-      PAPERLESS_TIKA_ENDPOINT: http://tika:9998
+    webserver:
+        image: ghcr.io/paperless-ngx/paperless-ngx:latest
+        restart: unless-stopped
+        depends_on:
+            - db
+            - broker
+            - gotenberg
+            - tika
+        ports:
+            - "8000:8000"
+        healthcheck:
+            test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "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
+            PAPERLESS_TIKA_ENABLED: 1
+            PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
+            PAPERLESS_TIKA_ENDPOINT: http://tika:9998
 
-  gotenberg:
-    image: docker.io/gotenberg/gotenberg:7.8
-    restart: unless-stopped
+    gotenberg:
+        image: docker.io/gotenberg/gotenberg:7.8
+        restart: unless-stopped
 
-    # The gotenberg chromium route is used to convert .eml files. We do not
-    # want to allow external content like tracking pixels or even javascript.
-    command:
-      - "gotenberg"
-      - "--chromium-disable-javascript=true"
-      - "--chromium-allow-list=file:///tmp/.*"
+        # The gotenberg chromium route is used to convert .eml files. We do not
+        # want to allow external content like tracking pixels or even javascript.
+        command:
+            - "gotenberg"
+            - "--chromium-disable-javascript=true"
+            - "--chromium-allow-list=file:///tmp/.*"
 
-  tika:
-    image: ghcr.io/paperless-ngx/tika:latest
-    restart: unless-stopped
+    tika:
+        image: ghcr.io/paperless-ngx/tika:latest
+        restart: unless-stopped
 
 volumes:
-  data:
-  media:
-  pgdata:
-  redisdata:
+    data:
+    media:
+    pgdata:
+    redisdata:
-- 
2.39.1


From 6bf9b93ebe48036d67d94a49162c1f6c17eb80de Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:22:06 +0200
Subject: [PATCH 02/12] refactor(compose): Harmonize restart and logging
 settigs

---
 docker/compose/common-settings.yml            | 11 ++++++++++
 .../compose/docker-compose.postgres-tika.yml  | 20 ++++++++++++++-----
 2 files changed, 26 insertions(+), 5 deletions(-)
 create mode 100644 docker/compose/common-settings.yml

diff --git a/docker/compose/common-settings.yml b/docker/compose/common-settings.yml
new file mode 100644
index 00000000..9fd26d75
--- /dev/null
+++ b/docker/compose/common-settings.yml
@@ -0,0 +1,11 @@
+services:
+    common-settings:
+        environment:
+            TZ: "${TIMEZONE:-Etc/UTC}"
+        logging:
+            driver: "json-file"
+            options:
+                max-size: "10m"
+                max-file: "10"
+                compress: "true"
+        restart: "${RESTARTPOLICY:-unless-stopped}"
diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 7423be72..d19c22d7 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -34,13 +34,17 @@ version: "3.4"
 services:
     broker:
         image: docker.io/library/redis:7
-        restart: unless-stopped
+        extends:
+            file: common-settings.yml
+            service: common-settings
         volumes:
             - redisdata:/data
 
     db:
         image: docker.io/library/postgres:13
-        restart: unless-stopped
+        extends:
+            file: common-settings.yml
+            service: common-settings
         volumes:
             - pgdata:/var/lib/postgresql/data
         environment:
@@ -50,7 +54,9 @@ services:
 
     webserver:
         image: ghcr.io/paperless-ngx/paperless-ngx:latest
-        restart: unless-stopped
+        extends:
+            file: common-settings.yml
+            service: common-settings
         depends_on:
             - db
             - broker
@@ -78,7 +84,9 @@ services:
 
     gotenberg:
         image: docker.io/gotenberg/gotenberg:7.8
-        restart: unless-stopped
+        extends:
+            file: common-settings.yml
+            service: common-settings
 
         # The gotenberg chromium route is used to convert .eml files. We do not
         # want to allow external content like tracking pixels or even javascript.
@@ -89,7 +97,9 @@ services:
 
     tika:
         image: ghcr.io/paperless-ngx/tika:latest
-        restart: unless-stopped
+        extends:
+            file: common-settings.yml
+            service: common-settings
 
 volumes:
     data:
-- 
2.39.1


From 9b7dd19f5c6f410594f35dd233d1d32c9d118dbf Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:28:02 +0200
Subject: [PATCH 03/12] refactor(compose): Replace static exposed port with
 environment variable

---
 docker/compose/docker-compose.postgres-tika.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index d19c22d7..554d9735 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -63,7 +63,7 @@ services:
             - gotenberg
             - tika
         ports:
-            - "8000:8000"
+            - "${WEBSERVER_PORT}":8000
         healthcheck:
             test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
             interval: 30s
-- 
2.39.1


From aee7de3b1adfb30e7f0f2737d567cfc8190d8302 Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:30:47 +0200
Subject: [PATCH 04/12] refactor(compose): Harmonize container names

---
 docker/compose/docker-compose.postgres-tika.yml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 554d9735..10316fc2 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -34,6 +34,7 @@ version: "3.4"
 services:
     broker:
         image: docker.io/library/redis:7
+        container_name: "paperless_ngx-broker-${CONTEXT}"
         extends:
             file: common-settings.yml
             service: common-settings
@@ -42,6 +43,7 @@ services:
 
     db:
         image: docker.io/library/postgres:13
+        container_name: "paperless_ngx-db-${CONTEXT}"
         extends:
             file: common-settings.yml
             service: common-settings
@@ -54,6 +56,7 @@ services:
 
     webserver:
         image: ghcr.io/paperless-ngx/paperless-ngx:latest
+        container_name: "paperless_ngx-webserver-${CONTEXT}"
         extends:
             file: common-settings.yml
             service: common-settings
@@ -84,6 +87,7 @@ services:
 
     gotenberg:
         image: docker.io/gotenberg/gotenberg:7.8
+        container_name: "paperless_ngx-gotenberg-${CONTEXT}"
         extends:
             file: common-settings.yml
             service: common-settings
@@ -97,6 +101,7 @@ services:
 
     tika:
         image: ghcr.io/paperless-ngx/tika:latest
+        container_name: "paperless_ngx-tika-${CONTEXT}"
         extends:
             file: common-settings.yml
             service: common-settings
-- 
2.39.1


From e600e84d5c6e6c8938498f8cfa8bef32c1aea180 Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:36:29 +0200
Subject: [PATCH 05/12] refactor(compose): Replace named volumes with bind
 mounts

---
 .../compose/docker-compose.postgres-tika.yml   | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 10316fc2..eacb76c8 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -39,7 +39,7 @@ services:
             file: common-settings.yml
             service: common-settings
         volumes:
-            - redisdata:/data
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/broker/data:/data
 
     db:
         image: docker.io/library/postgres:13
@@ -48,7 +48,7 @@ services:
             file: common-settings.yml
             service: common-settings
         volumes:
-            - pgdata:/var/lib/postgresql/data
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/db/data:/var/lib/postgresql/data
         environment:
             POSTGRES_DB: paperless
             POSTGRES_USER: paperless
@@ -73,10 +73,10 @@ services:
             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
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/data:/usr/src/paperless/data
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/media:/usr/src/paperless/media
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/export:/usr/src/paperless/export
+            - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/consume:/usr/src/paperless/consume
         env_file: docker-compose.env
         environment:
             PAPERLESS_REDIS: redis://broker:6379
@@ -105,9 +105,3 @@ services:
         extends:
             file: common-settings.yml
             service: common-settings
-
-volumes:
-    data:
-    media:
-    pgdata:
-    redisdata:
-- 
2.39.1


From a1ff3cdfd84a45e0a383168470a5028246577a7d Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:37:44 +0200
Subject: [PATCH 06/12] refactor(compose): Introduce dedicated network

---
 .../compose/docker-compose.postgres-tika.yml  | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index eacb76c8..05885149 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -35,6 +35,8 @@ services:
     broker:
         image: docker.io/library/redis:7
         container_name: "paperless_ngx-broker-${CONTEXT}"
+        networks:
+            paperless_ngx-default:
         extends:
             file: common-settings.yml
             service: common-settings
@@ -44,6 +46,8 @@ services:
     db:
         image: docker.io/library/postgres:13
         container_name: "paperless_ngx-db-${CONTEXT}"
+        networks:
+            paperless_ngx-default:
         extends:
             file: common-settings.yml
             service: common-settings
@@ -57,6 +61,8 @@ services:
     webserver:
         image: ghcr.io/paperless-ngx/paperless-ngx:latest
         container_name: "paperless_ngx-webserver-${CONTEXT}"
+        networks:
+            paperless_ngx-default:
         extends:
             file: common-settings.yml
             service: common-settings
@@ -88,6 +94,8 @@ services:
     gotenberg:
         image: docker.io/gotenberg/gotenberg:7.8
         container_name: "paperless_ngx-gotenberg-${CONTEXT}"
+        networks:
+            paperless_ngx-default:
         extends:
             file: common-settings.yml
             service: common-settings
@@ -102,6 +110,19 @@ services:
     tika:
         image: ghcr.io/paperless-ngx/tika:latest
         container_name: "paperless_ngx-tika-${CONTEXT}"
+        networks:
+            paperless_ngx-default:
         extends:
             file: common-settings.yml
             service: common-settings
+
+networks:
+    paperless_ngx-default:
+        name: paperless_ngx-${CONTEXT}
+        driver: bridge
+        driver_opts:
+            com.docker.network.enable_ipv6: "false"
+        ipam:
+            driver: default
+            config:
+                - subnet: ${SUBNET}
-- 
2.39.1


From fd35306130b35d9c4d77a3ca6849e96222a244cb Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:39:23 +0200
Subject: [PATCH 07/12] refactor(compose): No double quotes for port variable
 needed

---
 docker/compose/docker-compose.postgres-tika.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 05885149..f1dd4913 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -72,7 +72,7 @@ services:
             - gotenberg
             - tika
         ports:
-            - "${WEBSERVER_PORT}":8000
+            - ${WEBSERVER_PORT}:8000
         healthcheck:
             test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
             interval: 30s
-- 
2.39.1


From 0defc3f29d607e8c81c655b15fb9e92cf3921fdb Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 22:53:20 +0200
Subject: [PATCH 08/12] refactor(compose): Replace hard-linked env file with
 variables

---
 docker/compose/docker-compose.postgres-tika.yml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index f1dd4913..1a5abbb8 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -83,13 +83,17 @@ services:
             - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/media:/usr/src/paperless/media
             - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/export:/usr/src/paperless/export
             - /opt/docker-data/paperless_ngx-${CONTEXT}/webserver/consume:/usr/src/paperless/consume
-        env_file: docker-compose.env
         environment:
             PAPERLESS_REDIS: redis://broker:6379
             PAPERLESS_DBHOST: db
             PAPERLESS_TIKA_ENABLED: 1
             PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
             PAPERLESS_TIKA_ENDPOINT: http://tika:9998
+            PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE}
+            PAPERLESS_OCR_LANGUAGES: ${PAPERLESS_OCR_LANGUAGES}
+            PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
+            PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE}
+            PAPERLESS_URL: ${PAPERLESS_URL}
 
     gotenberg:
         image: docker.io/gotenberg/gotenberg:7.8
-- 
2.39.1


From c044e323b9d09a95c782b0a216c02874be52611c Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Tue, 16 May 2023 23:15:26 +0200
Subject: [PATCH 09/12] feat(compose): Bind to a virtual IP address

---
 docker/compose/docker-compose.postgres-tika.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 1a5abbb8..3cb20287 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -72,7 +72,7 @@ services:
             - gotenberg
             - tika
         ports:
-            - ${WEBSERVER_PORT}:8000
+            - ${WEBSERVER_VIP}:${WEBSERVER_PORT}:8000
         healthcheck:
             test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
             interval: 30s
-- 
2.39.1


From 51744302beb94ff44d348f3abf834e5222aca675 Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Wed, 17 May 2023 23:33:44 +0200
Subject: [PATCH 10/12] fix(compose): Apply unpaper, use cleaned images to
 build output file

---
 docker/compose/docker-compose.postgres-tika.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index 3cb20287..ed60ce40 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -89,6 +89,7 @@ services:
             PAPERLESS_TIKA_ENABLED: 1
             PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
             PAPERLESS_TIKA_ENDPOINT: http://tika:9998
+            PAPERLESS_OCR_CLEAN: ${PAPERLESS_OCR_CLEAN}
             PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE}
             PAPERLESS_OCR_LANGUAGES: ${PAPERLESS_OCR_LANGUAGES}
             PAPERLESS_SECRET_KEY: ${PAPERLESS_SECRET_KEY}
-- 
2.39.1


From 516c326ba44243c768b94b604d627616c580386c Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Wed, 17 May 2023 23:37:44 +0200
Subject: [PATCH 11/12] fix(compose): Let ping tell us when our virtual IP
 address is bound

---
 docker/compose/docker-compose.postgres-tika.yml | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index ed60ce40..e4e2b895 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -51,6 +51,12 @@ services:
         extends:
             file: common-settings.yml
             service: common-settings
+        healthcheck:
+            test: ["CMD", "ping", "-qnc", "1", "-W", "0.2", "${WEBSERVER_VIP}"]
+            interval: 2s
+            timeout: 2s
+            retries: 3
+            start_period: 10s
         volumes:
             - /opt/docker-data/paperless_ngx-${CONTEXT}/db/data:/var/lib/postgresql/data
         environment:
@@ -67,10 +73,11 @@ services:
             file: common-settings.yml
             service: common-settings
         depends_on:
-            - db
-            - broker
-            - gotenberg
-            - tika
+            db:
+                condition: service_healthy
+            broker:
+            gotenberg:
+            tika:
         ports:
             - ${WEBSERVER_VIP}:${WEBSERVER_PORT}:8000
         healthcheck:
-- 
2.39.1


From 249e2190fba5abd4a13c1311fe089936c3affe87 Mon Sep 17 00:00:00 2001
From: hygienic-books <>
Date: Wed, 17 May 2023 23:51:15 +0200
Subject: [PATCH 12/12] fix(compose): Unify depends_on

---
 docker/compose/docker-compose.postgres-tika.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml
index e4e2b895..d3ec434d 100644
--- a/docker/compose/docker-compose.postgres-tika.yml
+++ b/docker/compose/docker-compose.postgres-tika.yml
@@ -76,8 +76,11 @@ services:
             db:
                 condition: service_healthy
             broker:
+                condition: service_started
             gotenberg:
+                condition: service_started
             tika:
+                condition: service_started
         ports:
             - ${WEBSERVER_VIP}:${WEBSERVER_PORT}:8000
         healthcheck:
-- 
2.39.1