From 42c196c2c0dcbed0101d653e0ed67a3dfc3f1808 Mon Sep 17 00:00:00 2001 From: hygienic-books <> Date: Tue, 16 May 2023 22:17:21 +0200 Subject: [PATCH 01/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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/11] 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