Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Docker

Eidetica provides official container images for running the database server in containerized environments. Images are built using Nix, so they are minimal in size but lack any extra tools (curl, wget, etc).

There is a maintained Dockerfile in the repo but it is not published.

Container Registries

Official images are available from:

  • GitHub Container Registry: ghcr.io/arcuru/eidetica
  • Docker Hub: arcuru/eidetica

Both registries contain identical images with multi-architecture support (amd64 and arm64).

Available Tags

TagDescription
dev(Recommended) Development builds from main branch
latestLatest stable release
X.Y.ZSpecific version (e.g., 0.1.0)
X.YLatest patch release for minor version

Configuration

Environment Variables

VariableDescriptionDefault
EIDETICA_PORTPort for the HTTP server3000
EIDETICA_HOSTBind address0.0.0.0 (in container)
EIDETICA_BACKENDStorage backend (sqlite, postgres, inmemory)sqlite
EIDETICA_DATA_DIRDirectory for database and data files/config (in container)
EIDETICA_POSTGRES_URLPostgreSQL connection URL (when using postgres backend)-

Data Storage

The container stores data in /config by default. When using Docker volumes, ensure the directory has proper ownership (UID 1000, the eidetica user in the container).

Health Checks

The container includes a built-in health check that verifies the server is responding. You can also run it manually:

docker exec <container> eidetica health

See CLI Reference for all available commands.

Quick Start

Pull and run the latest stable image:

docker run -p 3000:3000 ghcr.io/arcuru/eidetica:latest

Or from Docker Hub:

docker run -p 3000:3000 arcuru/eidetica:latest

Docker Compose

For production deployments, Docker Compose provides a convenient way to manage Eidetica alongside other services.

Basic Configuration

Create a docker-compose.yml file:

services:
  eidetica:
    image: ghcr.io/arcuru/eidetica:latest
    ports:
      - "3000:3000"
    volumes:
      - eidetica-data:/config
    restart: unless-stopped

volumes:
  eidetica-data:

Note: When using bind mounts instead of named volumes, ensure the host directory is owned by UID 1000:

sudo chown -R 1000:1000 /path/to/config

Start the service:

docker compose up -d

With PostgreSQL Backend

For production use with PostgreSQL as the storage backend:

services:
  eidetica:
    image: ghcr.io/arcuru/eidetica:latest
    ports:
      - "3000:3000"
    environment:
      EIDETICA_BACKEND: postgres
      EIDETICA_POSTGRES_URL: postgres://eidetica:secret@postgres:5432/eidetica
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: eidetica
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: eidetica
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U eidetica -d eidetica"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  postgres-data:

Building Images Locally

The published image is built with Nix. The justfile contains scripts for building the image locally.

There is also a Dockerfile-based build available and maintained.

Build with:

just container nix
just container docker