services: marbor: # Pinned by default so `docker compose up` doesn't silently pull a newer # (possibly breaking) image on every restart. Override with # `MARBOR_IMAGE_TAG=latest docker compose up` to explicitly opt into # tracking the newest release, or set it to any other released tag. image: ghcr.io/anirudhx7/marbor:${MARBOR_IMAGE_TAG:-v0.19.3} ports: - "11434:11434" - "9090:9090" - "8080:8080" volumes: - marbor-data:/data - marbor-backups:/backups environment: - MARBOR_DB_PATH=/data/marbor.db # Scheduled backups (configurable from the Settings dashboard) go # to a SEPARATE named volume from marbor-data on purpose: a `docker # volume rm marbor-data` (or `docker-compose down -v`) then still leaves # every backup intact, and vice versa - one accidental wipe can't take # out both the live database and its backups at once. - MARBOR_BACKUP_DIR=/backups # Required for one-click restore (Settings > Backup & Restore): a restore # exits the process on purpose, relying on this restart policy to bring # it back up with the swapped-in database. Also just good practice for # any other unexpected exit. restart: unless-stopped healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:8080/health || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 10s volumes: marbor-data: marbor-backups: