fix: use ND_DBPATH to point to LiteFS database directly, avoiding symlink errors
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled

This commit is contained in:
2026-04-27 08:13:37 -07:00
parent a586d60682
commit 25885ea4f0

View File

@@ -16,29 +16,6 @@ PRIMARY_TAGS='["navidrome","web","traefik.enable=true","urlprefix-/navidrome","t
# --- Helper Functions ---
# Ensure Navidrome's data directory exists and has the database symlinked to LiteFS
setup_data_dir() {
echo "Setting up Navidrome data directory..."
# Ensure /data exists (should be a volume mount)
if [ ! -d "/data" ]; then
echo "Creating /data directory..."
mkdir -p /data || { echo "ERROR: Failed to create /data"; exit 1; }
fi
# Check if we can write to /data
touch /data/.write_test && rm /data/.write_test || { echo "ERROR: /data is not writable!"; exit 1; }
# Symlink the database and its sidecar files to the LiteFS mount.
# We use -f to overwrite any existing files.
echo "Creating symlinks to LiteFS..."
ln -sf /litefs/navidrome.db /data/navidrome.db || echo "Warning: Failed to symlink navidrome.db"
ln -sf /litefs/navidrome.db-wal /data/navidrome.db-wal || echo "Warning: Failed to symlink navidrome.db-wal"
ln -sf /litefs/navidrome.db-shm /data/navidrome.db-shm || echo "Warning: Failed to symlink navidrome.db-shm"
echo "Data directory setup complete."
}
# Backup Database (Only on Primary)
run_backup() {
local backup_dir="/data/backup"
@@ -90,12 +67,16 @@ deregister_service() {
start_app() {
echo "Node is Primary. Starting Navidrome..."
# Ensure shared directories exist
# Ensure shared directories exist on persistent host volume
mkdir -p /data/plugins /data/cache /data/backup
# Tell Navidrome to use the database directly from the LiteFS mount.
# This avoids symlink issues on filesystems that don't support them.
export ND_DBPATH="/litefs/navidrome.db"
/app/navidrome &
NAVIDROME_PID=$!
echo "Navidrome started with PID ${NAVIDROME_PID}"
echo "Navidrome started with PID ${NAVIDROME_PID} using DB at ${ND_DBPATH}"
}
# Stop Navidrome
@@ -122,7 +103,6 @@ trap cleanup TERM INT
# --- Main Loop ---
echo "Starting Supervisor. Waiting for leadership settle..."
setup_data_dir
echo "Node IP: $NODE_IP"
echo "Consul: $CONSUL_HTTP_ADDR"