diff --git a/create_pod_finance.sh b/create_pod_finance.sh index dc39cb8..a76ac0c 100755 --- a/create_pod_finance.sh +++ b/create_pod_finance.sh @@ -31,8 +31,15 @@ GRAFANA_CONTAINER_PORT='3000' BIND_DIR="$HOME/.local/share/$POD_NAME" POSTGRES_DATA_DIR="$BIND_DIR/postgres-data" GRAFANA_DATA_DIR="$BIND_DIR/grafana-data" -INBOX_DIR="$BIND_DIR/inbox" -UPLOADS_DIR="$BIND_DIR/uploads" +# inbox and uploads must live under one shared bind mount: process_pdf() +# moves a file from inbox to uploads via Path.replace() (os.replace/rename), +# which fails with EXDEV ("Invalid cross-device link") across two separate +# bind mounts even when both point at the same underlying host filesystem +# (Linux permits a filesystem to be mounted at multiple points, but rename() +# does not work across different mount points - see `man 2 rename`). +DATA_DIR="$BIND_DIR/data" +INBOX_DIR="$DATA_DIR/inbox" +UPLOADS_DIR="$DATA_DIR/uploads" USER_SYSTEMD_DIR="$HOME/.config/systemd/user" FINANCE_DIR="$HOME/bin/finance" @@ -142,8 +149,7 @@ podman run -d --name "$API_CTR_NAME" --pod "$POD_NAME" \ -e FB_GUI_PASSWORD_HASH \ -e FB_INBOX_DIR=/data/inbox \ -e FB_UPLOADS_DIR=/data/uploads \ - -v "$INBOX_DIR:/data/inbox:Z" \ - -v "$UPLOADS_DIR:/data/uploads:Z" \ + -v "$DATA_DIR:/data:Z" \ "$API_IMAGE" echo "Container '$API_CTR_NAME' started (rc=$?)"