Docker
TL;DR
The only two required environment variables are settings__main__secret_key
and settings__superuser__password
:
docker run -p 9400:8000 \
-e PAPERMERGE__MAIN__SECRET_KEY=abc \
-e DJANGO_SUPERUSER_PASSWORD=123 \
papermerge/papermerge:2.1.9
Point your web browser to http://localhost:9400 and you will see login screen:
Credentials are:
- username
admin
- password
123
Official Docker Images
Official Papermerge docker images are stored on docker hub and github packages.
Get Docker Image
The recommended way to get the Papermerge Docker Image is to pull the prebuilt image from the github repository packages:
docker pull papermerge/papermerge:latest
To use a specific version, you can pull a versioned tag. You can view the list of available versions in the github repository packages:
docker pull papermerge/papermerge:2.1.9
Adding OCR Languages to the Docker Image
By default the Docker image includes English and German OCR languages only.
You may want to add other OCR languages. You add extra OCR languages in three steps:
- Install extra langs in docker image (by extending it)
- Update
papermerge.toml
file with extra languages - Use/Mount
papermerge.toml
in docker, docker compose, kubernetes
You install extra languages in docker image by creating a new Dockerfile
from papermerge/papermerge
docker image.
Create new docker file with following content:
FROM papermerge/papermerge:2.1.9
# add Italian, Spanish and French
RUN apt install tesseract-ocr-ita tesseract-ocr-spa tesseract-ocr-fra
Note
FROM papermerge/papermerge:2.1.9
pull docker image from DockerHub.
If you write FROM ghcr.io/papermerge/papermerge
it pulls docker image
from GitHub container registry.
All languages are specified in three letters code as per ISO 639-2T standard - second column in the table.
Then run following command:
docker build -t mypapermerge:multi-lang -f Dockerfile .
Notice the "." character at the end. After running above command, you can use newly build docker image for lunching |project| with Italian, Spanish and French OCR languages.
Besides installing extra OCR languages in docker image, you also need to mount papermerge.toml file with following OCR languages configuration::
[ocr]
languages = { ita = "Italian", fra = "French", spa = "Spanish", eng = "English", deu = "German" }
default_language = "ita"
Danger
languages
must be written as one line! It uses so called inline table of toml format.
Here is an example of docker compose file which mounts papermerge.toml
file::
version: '3.7'
x-backend: &common
image: mypapermerge:multi-lang # <--- use docker image with extra OCR langs
volumes:
- media_root:/app/media
- xapian_index: /app/xapian_index
- ./papermerge.toml:/etc/papermerge.toml # <--- Mounted papermerge.toml (!)
environment:
- PAPERMERGE__MAIN__SECRET_KEY=12345SKK
- DJANGO_SUPERUSER_PASSWORD=1234
- PAPERMERGE__REDIS__HOST=redis
- PAPERMERGE__REDIS__PORT=6379
- PAPERMERGE__DATABASE__TYPE=postgres
- PAPERMERGE__DATABASE__USER=postgres
- PAPERMERGE__DATABASE__NAME=postgres
- PAPERMERGE__DATABASE__PASSWORD=postgres
- PAPERMERGE__DATABASE__HOST=db
- PAPERMERGE__DATABASE__PORT=5432
- PAPERMERGE__SEARCH__ENGINE=xapian
- PAPERMERGE__SEARCH__PATH=/app/xapian_index
services:
backend:
<<: *common
worker:
<<: *common
command: worker
redis:
image: redis:6
ports:
- '6379:6379'
db:
image: postgres:14.4
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=postgres
volumes:
media_root:
postgres_data:
xapian_index:
Use PostgreSQL as Database
By default Papermerge uses sqlite3 database. In order to use PostgreSQL use following docker compose file:
version: '3.7'
services:
app:
image: papermerge/papermerge:2.1.9
environment:
- PAPERMERGE__MAIN__SECRET_KEY=abc
- DJANGO_SUPERUSER_PASSWORD=12345
- PAPERMERGE__DATABASE__TYPE=postgres
- PAPERMERGE__DATABASE__USER=postgres
- PAPERMERGE__DATABASE__PASSWORD=123
- PAPERMERGE__DATABASE__NAME=postgres
- PAPERMERGE__DATABASE__HOST=db
ports:
- 8000:8000
depends_on:
- db
db:
image: bitnami/postgresql:14.4.0
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_PASSWORD=123
volumes:
postgres_data: