Files
docker-compose/.archived/paperless-ngx/docker-compose.yml
2025-08-12 15:05:09 +05:30

103 lines
3.2 KiB
YAML

services:
paperless-ngx-db:
container_name: paperless-ngx-db
image: docker.io/library/postgres:17.5
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
volumes:
- ${APPDATA_PATH}/paperless-ngx/db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
paperless-ngx-valkey:
container_name: paperless-ngx-valkey
image: docker.io/valkey/valkey:8.1.3
restart: unless-stopped
volumes:
- ${APPDATA_PATH}/paperless-ngx/valkey:/data
networks:
- backend
healthcheck:
test: ["CMD-SHELL", "valkey-cli ping | grep PONG"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
paperless-ngx-tika:
container_name: paperless-ngx-tika
image: docker.io/apache/tika:3.2.2.0
restart: unless-stopped
paperless-ngx-gotenberg:
container_name: paperless-ngx-gotenberg
image: docker.io/gotenberg/gotenberg:8.21.1
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/.*"
paperless-ngx:
container_name: paperless-ngx
image: ghcr.io/paperless-ngx/paperless-ngx:2.17.1
restart: unless-stopped
depends_on:
paperless-ngx-db:
condition: service_healthy
paperless-ngx-valkey:
condition: service_healthy
paperless-ngx-tika:
condition: service_healthy
paperless-ngx-gotenberg:
condition: service_healthy
environment:
- PAPERLESS_DBHOST=paperless-ngx-db
- PAPERLESS_DBENGINE=postgresql
- PAPERLESS_DBPORT=5432
- PAPERLESS_DBNAME=${POSTGRES_DB}
- PAPERLESS_DBUSER=${POSTGRES_USER}
- PAPERLESS_DBPASS=${POSTGRES_PASSWORD}
- PAPERLESS_REDIS=redis://paperless-ngx-valkey:6379
- PAPERLESS_TIKA_ENABLED=1
- PAPERLESS_TIKA_ENDPOINT=http://paperless-ngx-tika:9998
- PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http://paperless-ngx-gotenberg:3000
- USERMAP_UID=${PUID}
- USERMAP_GID=${PGID}
- PAPERLESS_URL=${PAPERLESS_URL}
- PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY}
- PAPERLESS_TIME_ZONE=${TZ}
- PAPERLESS_OCR_LANGUAGE=${PAPERLESS_OCR_LANGUAGE}
- PAPERLESS_FILENAME_FORMAT={correspondent}/{created_year}/{title}
- PAPERLESS_OCR_DESKEW=false
volumes:
- ${APPDATA_PATH}/paperless-ngx/data:/usr/src/paperless/data
- ${APPDATA_PATH}/paperless-ngx/media:/usr/src/paperless/media
- ${APPDATA_PATH}/paperless-ngx/export:/usr/src/paperless/export
- ${APPDATA_PATH}/paperless-ngx/consume:/usr/src/paperless/consume
ports:
- ${SERVER_PORT}:8000
networks:
- frontend
- backend
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
networks:
frontend:
external: true
backend:
external: true