Shinyproxy: Ich kann die Datei navbar.html nicht bearbeiten, wenn sich Shinyproxy im Container befindet

Erstellt am 19. März 2020  ·  8Kommentare  ·  Quelle: openanalytics/shinyproxy

Hallo!

Ich kann navbar.html nicht bearbeiten, wenn ShinyProxy als Docker-Container ausgeführt wird. Ich habe versucht, die bearbeitete navbar.html in das Verzeichnis templates/fragments zu legen und dann nach /opt/shinyproxy/templates zu kopieren, aber die Änderungen werden immer noch nicht angezeigt, wenn ich den Server neu starte.

Zum Beispiel möchte ich "Abmelden" in "Sair" ändern.

image


Dockerdatei:

VON openjdk:8-jre

RUN mkdir -p /opt/shinyproxy/
Führen Sie wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar aus
KOPIEREN Sie application.yml /opt/shinyproxy/application.yml
Führen Sie mkdir-Vorlagen aus
COPY templates/* /opt/shinyproxy/templates/
Führen Sie mkdir-Vorlagen/Fragmente aus
COPY Vorlagen/Fragmente/* /opt/shinyproxy/Vorlagen/Fragmente/

ARBEITSVERZ /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]


Anwendung.yml:

Proxy:
Titel: LicitaR
Zielseite: /
Vorlagenpfad: ./templates
Port: 8080
Authentifizierung: einfach
Admin-Gruppen: Admins
Benutzer:

  • Name: Jack
    Passwort: Passwort
    Gruppen: Administratoren
  • Name: Jeff
    Passwort: Passwort
    Docker:
    internes Netzwerk: wahr
    Container-Netzwerk: dnv-net
    Spezifikationen:
  • id: 01_hello
    Anzeigename: Hallo Anwendung
    Beschreibung: Anwendung, die die Grundlagen einer Shiny-App demonstriert
    container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
    Container-Image: openanalytics/shinyproxy-demo
    container-network: "${proxy.docker.container-network}"
  • Kennung: Euler
    Anzeigename: Eulersche Zahl
    container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
    Container-Image: Euler-Docker
    container-network: "${proxy.docker.container-network}"

Protokollierung:
Datei:
/log/shinyproxy.log


Ich weiß nicht, ob ich etwas falsch mache. Kannst du mir bitte helfen? Danke.

Paulo

Hilfreichster Kommentar

Sie sollten Ihr Bild neu erstellen.

Übrigens sollten Sie die Dateien nicht kopieren. Stattdessen sollten Sie den Ordner als Volume erstellen. Auf diese Weise müssen Sie nach dem Ändern der Datei nur den Browser aktualisieren.

Alle 8 Kommentare

Sie sollten Ihr Bild neu erstellen.

Übrigens sollten Sie die Dateien nicht kopieren. Stattdessen sollten Sie den Ordner als Volume erstellen. Auf diese Weise müssen Sie nach dem Ändern der Datei nur den Browser aktualisieren.

@shrektan danke für deine Antwort.

  1. Nach den Änderungen habe ich das Bild mit sudo docker-compose build neu erstellt, aber es hat sich nichts geändert. Ist es richtig?

  2. Über den Ordner als Volume, könnten Sie mir ein Beispiel zeigen? Ich bin ein neuer Benutzer von ShinyProxy, also bin ich ein bisschen verloren.

Danke.

Tut mir leid, ich habe jetzt keine Zeit, aber ich mache einen Screenshot eines Produktions-Setups für Sie. Es sollte leicht verständlich sein.

Die Docker-Datei

image

Docker erstellt YAML

image

Ordnerstruktur

image

@shrektan Vielen Dank für deine Hilfe.

1) Ich habe die 'Volumes' in der docker-compose.yml erstellt und die Dockerfile geändert, wie Sie gesagt haben. Die Dateien (Admin, App, Index, Login) werden verwendet, wenn die Seite aktualisiert wird (danke an Sie). Aber die shineproxy/application.yml werden nicht verwendet, obwohl ich sudo docker-compose build eingebe und der Befehl sudo docker-compose up -d shinyproxy sagt "dnv_shinyproxy is up-to-date". Also habe ich einen CP in der Dockerfile bezüglich der application.yml gelassen. :(


docker-compose.yml

Version: "3.6"
Dienstleistungen:
glänzender Proxy:
Bild: datanovia/shinyproxy
Containername: dnv_shinyproxy
Neustart: bei Fehler
bauen: ./shinyproxy
Netzwerke:
- dnv-net
Häfen:
- 8080:8080
Volumen:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./shinyproxy-logs/server:/log"
- "./shinyproxy-logs/container:/container-logs"
- "./shinyproxy/application.yml:/opt/shinyproxy/application.yml"
- "./shinyproxy/templates/:/opt/shinyproxy/templates"
- "./shinyproxy/templates/fragments/navbar.html:/opt/shinyproxy/templates/fragments/navbar.html"
Euler:
Bild: Euler-Docker
Containername: dnv_euler
bauen: ./shinyapps/euler-docker
Netzwerke:
- dnv-net

Netzwerke:
dnv-net:
Name: dnv-net


Dockerfile

VON openjdk:8-jre

RUN mkdir -p /opt/shinyproxy/
Führen Sie wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar aus
KOPIEREN Sie application.yml /opt/shinyproxy/application.yml

ARBEITSVERZ /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]


Anwendung.yml

Proxy:
Titel: LicitaR
Zielseite: /
Verstecken-Navigationsleiste: falsch
Vorlagenpfad: ./templates/
Port: 8080
Authentifizierung: einfach
Admin-Gruppen: Admins
Benutzer:

  • Name: Jack
    Passwort: pass
    Gruppen: Administratoren
  • Name: Jeff
    Passwort: pass
    Docker:
    internes Netzwerk: wahr
    Container-Netzwerk: dnv-net
    Arbeitsverzeichnis: /home/paulo/shinyproxy-config/
    Spezifikationen:
  • id: 01_hello
    Anzeigename: Hallo Einfache APP <3
    Beschreibung: Anwendung Shiny App
    container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
    Container-Image: openanalytics/shinyproxy-demo
    container-network: "${proxy.docker.container-network}"
  • Kennung: Euler
    Anzeigename: Eulersche Zahl
    container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
    Container-Image: Euler-Docker
    container-network: "${proxy.docker.container-network}"

Protokollierung:
Datei:
/log/shinyproxy.log


2) Ich kann die Datei navbar.html immer noch nicht ändern. Als ich template-path: ./templates/fragments eingegeben habe, war es möglich, aber auf diese Weise wurden die anderen Dateien, die ich geändert habe, nicht verwendet (Admin, App, Index, Login).


3) Baum

image

@PauloJhonny

Sie können die Fragmente in Vorlagen einfügen, aber Sie müssen dies zuerst in index.html oder irgendwo sonst beanspruchen (sorry, ich erinnere mich nicht an den genauen Ort).

Wenn Sie nicht wissen (oder sich nicht sicher sind), was Sie tun, müssen Sie den Ordner fragments wahrscheinlich unter shinyproxy/ . Der Grund dafür ist, dass Sie dieselbe Ordnerstruktur wie Shinyproxy beibehalten müssen, es sei denn, Sie wissen, wie es funktioniert. Die Standardordnerstruktur von Shinyproxy finden Sie hier: https://github.com/openanalytics/shinyproxy/tree/master/src/main/resources

Nun, ich habe tatsächlich ein Docker-Compose-Beispiel für Sie erstellt. Siehe https://github.com/shrektan/shinyproxy-docker-compose-example. Hoffe, das klärt Ihre Verwirrung.

(Auch auf diese Weise werden diese HTML-Vorlagendateien im laufenden Betrieb geladen. Sie müssen den Docker-Container also nicht immer wieder herunterfahren und neu starten. Bearbeiten, speichern und aktualisieren Sie einfach den Browser. Dies ist ein viel einfacherer Arbeitsablauf zur Optimierung der Benutzeroberfläche .)

Der Screenshot des Beispiels

image

@shrektan vielen Dank. Es hat mir wirklich geholfen.

Es funktionierte. Ich habe den Fragments-Ordner an der falschen Stelle abgelegt (siehe den richtigen Baum). Alle Dateien werden jetzt heißgeladen, mit Ausnahme der Datei application.yml. Danke dir.

image

Gut das zu hören.

Übrigens, das Thema schließen ist gut, wenn Sie keine weiteren Fragen haben.

Danke.

Danke. :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen