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
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
This commit is contained in:
@@ -16,29 +16,6 @@ PRIMARY_TAGS='["navidrome","web","traefik.enable=true","urlprefix-/navidrome","t
|
|||||||
|
|
||||||
# --- Helper Functions ---
|
# --- 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)
|
# Backup Database (Only on Primary)
|
||||||
run_backup() {
|
run_backup() {
|
||||||
local backup_dir="/data/backup"
|
local backup_dir="/data/backup"
|
||||||
@@ -90,12 +67,16 @@ deregister_service() {
|
|||||||
start_app() {
|
start_app() {
|
||||||
echo "Node is Primary. Starting Navidrome..."
|
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
|
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 &
|
/app/navidrome &
|
||||||
NAVIDROME_PID=$!
|
NAVIDROME_PID=$!
|
||||||
echo "Navidrome started with PID ${NAVIDROME_PID}"
|
echo "Navidrome started with PID ${NAVIDROME_PID} using DB at ${ND_DBPATH}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Stop Navidrome
|
# Stop Navidrome
|
||||||
@@ -122,7 +103,6 @@ trap cleanup TERM INT
|
|||||||
# --- Main Loop ---
|
# --- Main Loop ---
|
||||||
|
|
||||||
echo "Starting Supervisor. Waiting for leadership settle..."
|
echo "Starting Supervisor. Waiting for leadership settle..."
|
||||||
setup_data_dir
|
|
||||||
echo "Node IP: $NODE_IP"
|
echo "Node IP: $NODE_IP"
|
||||||
echo "Consul: $CONSUL_HTTP_ADDR"
|
echo "Consul: $CONSUL_HTTP_ADDR"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user