Shinyproxy: Einhängen von Shinyproxy zum Host-Dateisystem.

Erstellt am 5. Jan. 2021  ·  8Kommentare  ·  Quelle: openanalytics/shinyproxy

Ich habe eine glänzende App, in der Benutzer Daten hochladen, die Daten in der App manipulieren und dann die manipulierten Daten in ihrem lokalen Dateisystem speichern können. Ich kann dies mit Shinyproxy lokal ausführen lassen, indem ich verwende

container-volumes: ["/Users:/app_data"]

in application.yml. Dadurch wird das Dateisystem des Hostbenutzers (/Users) in den Container (/app_data) eingehängt. Wenn ich die App jedoch auf einem Remote-Server bereitstelle, kann ich das Host-Dateisystem nicht mehr mounten. Ich würde dem Benutzer die Möglichkeit geben, in seinem eigenen Dateisystem zu speichern. Ist das möglich? Ich habe einige Alternativen zu /Users wie ${HOME} ohne Erfolg ausprobiert.

Dankeschön.

question

Alle 8 Kommentare

Ja, Sie können dies mit der Syntax tun:

container-volumes: ["/home/#{proxy.userId}:/app_data"]

Verwendung:
container-volumes: ["/home/#{proxy.userId}:/app_data"]
führt immer noch dazu, dass ich nicht auf das Host-Dateisystem zugreifen kann, wenn die App auf einem Remote-Server bereitgestellt wird. Für den Kontext verwende ich ShinyFileSave in der Shiny-App und dieser Code lautet wie folgt:
roots <- c("Home Directory" = "/app_data")
shinyFileSave(input = input, id = 'save', roots = roots, session = session)
Wenn ich meine App über einen Remote-Server bereitstelle und die Schaltfläche zum Speichern der Datei verwende, werde ich in ein leeres Dateisystem ohne Ordner anstelle meines Host-Dateisystems mit Zugriff auf meinen Desktop usw. gemountet. Hänge ich das Dateisystem des Host-Benutzers auf der Linux-Fernbedienung an? Server statt des Dateisystems auf ihrem Desktop? Oder vielleicht ist es ein Berechtigungsproblem. Am Ende des Tages möchte ich, dass der Benutzer in der Lage ist, das, was er in der Webapp erstellt hat, auf seinem Desktop zu speichern. Dankeschön!

Falls es von Nutzen ist, hier ist eine Liste der verschiedenen Halterungen, die ich versucht habe. Keine hat bisher funktioniert:

`container-volumes: ["${HOME}:/app_data"]`
`container-volumes: ["/$pwd:/app_data"]`
`container-volumes: ["$HOME:/app_data"]`
`container-volumes: ["/Users:/app_data"]`
`container-volumes: ["~:/app_data"]`
`container-volumes: ["/home/#{proxy.userId}:/app_data"]`

Mounte ich das Dateisystem des Host-Benutzers auf dem Linux-Remote-Server anstelle des Dateisystems auf seinem Desktop?

Ja richtig. Wenn der Shinyproxy auf einem Linux-Remote-Server läuft, ist das Host-System dieser Remote-Server, auf den Sie mit Volume-Mounts zugreifen können.

Am Ende des Tages möchte ich, dass der Benutzer in der Lage ist, das, was er in der Webapp erstellt hat, auf seinem Desktop zu speichern.

Wäre in diesem Fall ein downloadButton nicht ausreichend? (https://shiny.rstudio.com/articles/download.html)

Die Lösung downloadButton und downloadHandler ist nicht ideal, aber sie wird funktionieren. Ich denke, dies ist wahrscheinlich die einzige Lösung angesichts der Natur von ShinyProxy und dass es unmöglich wäre, auf dem Desktop eines Benutzercomputers zu mounten. Danke für die Hilfe!

Das „Host-Dateisystem“ ist das Dateisystem des entfernten Servers. Was Sie erreichen möchten, ist die Datei im Dateisystem des Clients zu speichern? Es ist meiner Meinung nach nicht möglich.

Ja, das ursprüngliche Ziel war es, eine Datei mit shinyFileSave im Dateisystem des Clients zu speichern, aber ich stimme zu, dass dies unmöglich ist.

Hallo @lucius-verus-fan

Ich denke, dass Ihre Frage jetzt beantwortet ist, daher schließe ich diese Ausgabe. Wie immer können Sie gerne eine neue Ausgabe eröffnen, wenn Sie andere Fragen oder Probleme haben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen