-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
57 lines (56 loc) · 2.67 KB
/
Copy pathdocker-compose.yml
File metadata and controls
57 lines (56 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# cull NAS deployment.
#
# Volume-mount, don't copy. The raw output dir is the source of truth and the
# canonical side of the RealTimeSync pair. _trash/_keep live inside it so a
# cull is an ordinary move. The .cull state dir (manifest, action log, thumb
# cache) is a separate persistent volume so it survives a rebuild.
services:
cull:
build:
context: .
# The image runs as uid/gid 1000 by default; match these to the owner
# of the mounted volumes (Synology users are often 1026:100). Set
# APP_UID: "0" to fall back to root for legacy root-owned state dirs.
# INSTALL_TAGGER: "true" bakes in onnxruntime for the WD auto-tagger.
args:
APP_UID: "1000"
APP_GID: "1000"
INSTALL_TAGGER: "false"
image: cull:latest
container_name: cull
restart: unless-stopped
ports:
# Reached over Tailscale. Bind is 0.0.0.0 inside the container.
- "8080:8080"
environment:
CULL_CONFIG: /app/config.yaml
CULL_RAW_DIR: /data/output
CULL_STORE_BACKEND: indexed
CULL_INDEX_PATH: /data/cull/index.db
# Starred images are copied here. Mount this at the folder your photo
# sync watches (e.g. an iCloud-watched share).
CULL_STARRED_DIR: /data/starred
CULL_MANIFEST_PATH: /data/cull/manifest.json
CULL_ACTIONLOG_PATH: /data/cull/actionlog.jsonl
CULL_THUMB_CACHE_DIR: /data/cull/thumbs
CULL_HOST: 0.0.0.0
CULL_PORT: "8080"
volumes:
# Optional explicit config (otherwise env and defaults apply).
# NOTE: config.yaml must EXIST as a file before `docker compose up`,
# or Docker creates it as a directory and startup breaks. Seed it with:
# cp config.example.yaml config.yaml
- ./config.yaml:/app/config.yaml:ro
# Host paths below are Synology-style (/volume1, lowercase). TerraMaster
# (TOS) mounts at /Volume1 (capital V) — check with `df -h`. The
# TerraMaster deploy path is nas-update.sh, which has its own paths.
# Set the three CULL_*_HOST vars in a .env file next to this compose
# file (cp .env.example .env, then edit) rather than editing the
# defaults below, so a `git pull` never fights your local paths.
# Raw output dir, read/write, the source of truth (canonical side).
# _trash and _keep are created as siblings INSIDE this mount.
- ${CULL_RAW_DIR_HOST:-/volume1/yourshare/pictures}:/data/output
# cull's own persistent state (index + action log + thumb cache).
- ${CULL_STATE_DIR_HOST:-/volume1/yourshare/.cull}:/data/cull
# Starred images are copied here; point it at your photo-sync folder.
- ${CULL_STARRED_DIR_HOST:-/volume1/yourshare/starred}:/data/starred