Sign inSign up

azuretechllc/tabula

By azuretechllc

•Updated about 1 month ago

Unofficial Docker image for Tabula

Image
0

183

azuretechllc/tabula repository overview

⁠Tabula

A custom, multi-architecture Docker image for Tabula, a tool for extracting tables from PDF documents into structured data.

This image packages the official Tabula application for Docker, Docker Compose, Portainer, and reverse-proxy deployments.

⁠Image

azuretechllc/tabula

⁠Current Tabula Version

1.2.1

⁠Supported Architectures

  • linux/amd64
  • linux/arm64

Docker automatically selects the correct architecture when pulling the image.

⁠Available Tags

azuretechllc/tabula:1.2.1
azuretechllc/tabula:1.2
azuretechllc/tabula:1
azuretechllc/tabula:latest

For production deployments, pinning the full application version is recommended:

image: azuretechllc/tabula:1.2.1

To track the current build:

image: azuretechllc/tabula:latest

⁠Features

  • Built from the official Tabula release artifact
  • SHA-256 verification during the Docker build
  • Java 8 runtime for compatibility with Tabula 1.2.1
  • linux/amd64 and linux/arm64
  • Non-root runtime user
  • Built-in Docker health check
  • Persistent /data storage
  • Configurable Java memory
  • Docker Compose and Portainer compatible
  • Direct-access and reverse-proxy deployment examples
  • No database required

⁠Quick Start

docker run -d \
  --name tabula \
  --restart unless-stopped \
  -p 8080:8080 \
  -v tabula_data:/data \
  azuretechllc/tabula:latest

Open:

http://SERVER_IP:8080

⁠Docker Compose

services:
  tabula:
    image: azuretechllc/tabula:${TABULA_TAG:-latest}
    container_name: tabula
    restart: unless-stopped

    environment:
      TABULA_PORT: ${TABULA_PORT:-8080}
      TABULA_DATA_DIR: ${TABULA_DATA_DIR:-/data}
      TABULA_OPEN_BROWSER: ${TABULA_OPEN_BROWSER:-false}
      JAVA_XMS: ${JAVA_XMS:-256M}
      JAVA_XMX: ${JAVA_XMX:-1024M}
      JAVA_EXTRA_OPTS: ${JAVA_EXTRA_OPTS:-}
      TZ: ${TZ:-America/Chicago}

    ports:
      - "${TABULA_HTTP_PORT:-8080}:${TABULA_PORT:-8080}"

    volumes:
      - tabula_data:${TABULA_DATA_DIR:-/data}

volumes:
  tabula_data:

Example .env:


TABULA_TAG=latest

TABULA_HTTP_PORT=8080
TABULA_PORT=8080
TABULA_DATA_DIR=/data
TABULA_OPEN_BROWSER=false

JAVA_XMS=256M
JAVA_XMX=1024M
JAVA_EXTRA_OPTS=

TZ=America/Chicago

Start:

docker compose up -d

Logs:

docker compose logs -f tabula

Stop:

docker compose down

⁠Reverse Proxy Deployment

When using Nginx Proxy Manager or another Docker reverse proxy, Tabula does not need to publish a host port.

services:
  tabula:
    image: azuretechllc/tabula:${TABULA_TAG:-latest}
    container_name: tabula
    restart: unless-stopped

    environment:
      TABULA_PORT: ${TABULA_PORT:-8080}
      TABULA_DATA_DIR: ${TABULA_DATA_DIR:-/data}
      TABULA_OPEN_BROWSER: ${TABULA_OPEN_BROWSER:-false}
      JAVA_XMS: ${JAVA_XMS:-256M}
      JAVA_XMX: ${JAVA_XMX:-1024M}
      JAVA_EXTRA_OPTS: ${JAVA_EXTRA_OPTS:-}
      TZ: ${TZ:-America/Chicago}

    volumes:
      - tabula_data:${TABULA_DATA_DIR:-/data}

    networks:
      - proxy

volumes:
  tabula_data:

networks:
  proxy:
    external: true

Create the external network once if needed:

docker network create proxy

Reverse-proxy target:

Hostname: tabula
Port: 8080
Protocol: http

⁠Environment Variables

VariableDefaultDescription
TABULA_PORT8080Internal Tabula web port
TABULA_DATA_DIR/dataPersistent working/data directory
TABULA_OPEN_BROWSERfalseControls Tabula browser-opening behavior
JAVA_XMS256MInitial Java heap size
JAVA_XMX1024MMaximum Java heap size
JAVA_EXTRA_OPTSemptyAdditional JVM options
TZUTCContainer timezone

TABULA_TAG and TABULA_HTTP_PORT are Compose variables rather than application environment variables.

⁠Persistent Storage

The persistent directory inside the container is:

/data

Named-volume example:

volumes:
  - tabula_data:/data

Host-directory example:

volumes:
  - /opt/tabula/data:/data

The container runs as:

UID 10001
GID 10001

For a Linux bind mount:

sudo mkdir -p /opt/tabula/data
sudo chown -R 10001:10001 /opt/tabula/data

⁠Java Memory

Defaults:


JAVA_XMS=256M
JAVA_XMX=1024M

Smaller-memory example:


JAVA_XMS=128M
JAVA_XMX=512M

⁠Health Check

docker ps

Detailed health information:

docker inspect --format='{{json .State.Health}}' tabula

⁠Updating an Existing Installation

⁠Using latest

Pull the updated image:

docker pull azuretechllc/tabula:latest

Recreate the Compose deployment:

docker compose pull
docker compose up -d

Optionally remove unused older images:

docker image prune

Your persistent /data volume is separate from the container image and is retained when the container is recreated.

⁠Using a Version Tag

Change:


TABULA_TAG=1.2.1

to the desired newer version and run:

docker compose pull
docker compose up -d

Verify the running container:

docker ps
docker logs --tail 100 tabula

⁠Building and Publishing This Image

Log in to Docker Hub:

docker login

Create a Buildx builder once if needed:

docker buildx create \
  --name multiarch \
  --driver docker-container \
  --use

docker buildx inspect --bootstrap

Publish the multi-architecture version:

./build.sh --push

The build publishes:

azuretechllc/tabula:1.2.1
azuretechllc/tabula:1.2
azuretechllc/tabula:1
azuretechllc/tabula:latest

for:

linux/amd64
linux/arm64

Verify the manifest:

docker buildx imagetools inspect azuretechllc/tabula:latest

⁠Updating the Image Build for a New Tabula Release

When a new official Tabula release is available:

  1. Verify the new official release version.
  2. Obtain and verify the SHA-256 checksum for its release artifact.
  3. Update TABULA_VERSION.
  4. Update TABULA_SHA256.
  5. Update the version references in this README.
  6. Build and test both AMD64 and ARM64 variants.
  7. Publish the version, minor, major, and latest tags.
  8. Verify the published multi-architecture manifest.

Do not reuse the old checksum for a new Tabula release.

⁠About This Image

This is a custom Docker packaging of the Tabula application.

Tabula itself is developed by the Tabula project. This Docker image is independently packaged and is not an official Docker image published by the Tabula project.

Official upstream project:

https://github.com/tabulapdf/tabula⁠

⁠License

Tabula is distributed under the MIT License. Refer to the upstream Tabula project for complete licensing and attribution information.

Tag summary

Content type

Image

Digest

sha256:4c0ff1d95…

Size

120.4 MB

Last updated

about 1 month ago

docker pull azuretechllc/tabula