Backups are .tar.gz archives of a consistent database snapshot (VACUUM INTO) plus the images folder. They run on a cron schedule, daily at 3:00 by default, and the newest N scheduled ones are kept (7 by default). Manual backups are never pruned. Settings → Backups offers schedule presets or a custom cron expression, retention, "Back up now", and download/delete for each backup. A small built-in parser handles standard 5-field cron syntax with names, ranges, steps and @daily-style shorthands. Backups go to CANON_BACKUP_DIR (default data/backups). Compose mounts a separate canon-backups volume at /backups, overridable with CANON_BACKUP_PATH. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.3 KiB
YAML
44 lines
1.3 KiB
YAML
name: canon
|
|
|
|
# Works with a plain `docker compose up -d --build` and with Arcane's Git sync
|
|
# (Pull). Arcane pulls this file's whole directory, so the build context is
|
|
# the repository itself.
|
|
|
|
services:
|
|
canon:
|
|
build:
|
|
context: .
|
|
args:
|
|
VERSION: ${CANON_VERSION:-dev}
|
|
image: canon:latest
|
|
# Never look for canon:latest on a registry: every deploy (including
|
|
# Arcane's "Pull image" / "Redeploy after sync") builds from the source
|
|
# that was just synced.
|
|
pull_policy: build
|
|
container_name: canon
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${CANON_BIND:-0.0.0.0}:${CANON_PUBLISH_PORT:-4242}:4242"
|
|
volumes:
|
|
# A named volume by default, so a Git sync never touches the database.
|
|
# Set CANON_DATA_PATH to a host folder (e.g. ./data) to keep it there.
|
|
- ${CANON_DATA_PATH:-canon-data}:/data
|
|
# Backups get their own mount so they can live somewhere else, like a
|
|
# NAS share. Set CANON_BACKUP_PATH to a host folder to use one.
|
|
- ${CANON_BACKUP_PATH:-canon-backups}:/backups
|
|
environment:
|
|
CANON_BACKUP_DIR: /backups
|
|
env_file:
|
|
- path: .env
|
|
required: false
|
|
networks:
|
|
- chromanet
|
|
|
|
volumes:
|
|
canon-data:
|
|
canon-backups:
|
|
|
|
networks:
|
|
chromanet:
|
|
external: true
|