Portfolio Performance in Docker

Guten Tag,

habe heute versucht ein Docker Image zu erstellen von PP. Hat jemand eine Ahnung oder kann mir helfen?

Habe hier was gefunden: https://github.com/sunsided/portfolio-performance-docker ist aber outdated und ich habe es versucht mit aktuellen Versionsnummern etwas zu erneuern.

Bin für jeden Tipp oder Hilfe dankbar! Schaffe es aktuell nicht bei DockerHub das Image mit TAG zu erstellen.

Ziel: Docker bei Synology NAS starten.

Sieh dir bitte einmal https://github.com/sunsided/portfolio-performance-docker/blob/master/Dockerfile an.

ENV VERSION 0.27.2
ENV ARCHIVE https://s3.amazonaws.com/name.abuchen.portfolio/${VERSION}/PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz

Und wenn ich das mit dem aktuellen Download vergleiche:

https://github.com/buchen/portfolio/releases/download/0.42.1/PortfolioPerformance-0.42.1-linux.gtk.x86_64.tar.gz

Ganz kleiner Unterschied in der URL :thinking:

Ja, weil die URL alt ist. Die habe auch ausgetauscht :-X Oder darf ich nicht direkt von PP ziehen (über Git)?
Muss ich das wie der Typ irgendwo zwischenlagern?

Bin schon weiter, weil ich falsches Betriebsystem hatte. Aber jetzt scheitert es am entpacken …

Es ist leider schwierig ohne Fehlermeldung zu helfen.

Was passiert denn wenn du den fraglichen Befehl in der Konsole gezielt eingibst?

1 Like
2019-10-23 11:04:25 (23.7 MB/s) - ‘PortfolioPerformance-0.42.1-linux.gtk.x86_64.tar.gz’ saved [47316815/47316815]

The command '/bin/sh -c cd /opt && (wget -c ${ARCHIVE} | tar xzfv)' returned a non-zero code: 2

Hier der Fehler, scheint ein Problem mit dem Archiv zu sein, habe schon die verschiedensten Syntax ausprobiert für Entpacken. Ich bekomme es null hin.

Müsste es zum testen nicht wie folgt heißen?
curl https://github.com/buchen/portfolio/releases/download/0.42.1/PortfolioPerformance-0.42.1-linux.gtk.x86_64.tar.gz | tar xvz

Habe zwar keine Ahnung von Linux, aber ein Befehl ohne gesetzte Variabel für oft zu Fehlern.

# curl https://github.com/buchen/portfolio/releases/download/0.42.1/PortfolioPerformance-0.42.1-linux.gtk.x86_64.tar.gz | tar xvz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   640    0   640    0     0   2591      0 --:--:-- --:--:-- --:--:--  2601

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Hatte ich alles, geht nicht. Glaube weil Github intern weiterleitet an … Amazon Server … Oder was auch immer. jedenfalls dann wget versucht und direkt die File auf dem Server geladen, auch das geht nicht. Voll nervig!

Ok, ich habs. https://hub.docker.com/r/lenusch/performance-portfolio
Docker ist fertig. Aber warum das jetzt nicht geht übersteigt meine Fähigkeit :smiley:
Ich kann bei mir im NAS nur in Log schauen wenn der Container gestartet ist, aber der geht halt nach 5 Sekunden direkt aus.

Im Cointainer Log (wenig aufschlußreich) steht folgendes drin:

|2019-10-23 12:59:53|stdout|/opt/portfolio/configuration/1571835586467.log.|
|---|---|---|
|2019-10-23 12:59:53|stdout|An error has occurred. See the log file|
|2019-10-23 12:59:53|stdout|PortfolioPerformance:|
|2019-10-23 12:59:52|stdout||
|2019-10-23 12:59:45|stdout|PortfolioPerformance: Cannot open display: |
|2019-10-23 12:59:44|stdout|PortfolioPerformance: Cannot open display: |
|2019-10-23 12:58:59|stdout|/opt/portfolio/configuration/1571835532847.log.|
|2019-10-23 12:58:59|stdout|An error has occurred. See the log file|
|2019-10-23 12:58:59|stdout|PortfolioPerformance:|
|2019-10-23 12:58:52|stdout|PortfolioPerformance: Cannot open display: |
|2019-10-23 12:58:51|stdout|PortfolioPerformance: Cannot open display: |
|2019-10-23 12:57:22|stdout|/opt/portfolio/configuration/1571835438982.log.|
|2019-10-23 12:57:22|stdout|An error has occurred. See the log file|
|2019-10-23 12:57:22|stdout|PortfolioPerformance:|

In in diese „/opt/portfolio/configuration/+.log“ Datei reinschauen zu können, muss der Container an bleiben, tut er nicht XD kp …

Ok ich konnte doch so eine LOG File öffnen (Container exportiert und paar Mal entpackt, dann konnte ich an die Dateien ran):

!SESSION 2019-10-23 12:55:59.718 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_212
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.osgi 4 0 2019-10-23 12:56:05.962
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
	at org.eclipse.swt.SWT.error(SWT.java:4621)
	at org.eclipse.swt.widgets.Display.createDisplay(Display.java:1038)
	at org.eclipse.swt.widgets.Display.create(Display.java:1025)
	at org.eclipse.swt.graphics.Device.<init>(Device.java:179)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:590)
	at org.eclipse.swt.widgets.Display.<init>(Display.java:581)
	at org.eclipse.swt.widgets.Display.getDefault(Display.java:2450)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.getApplicationDisplay(E4Application.java:134)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:149)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:199)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:391)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:246)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1474)

Immer dasselbe! Vielleicht weiß @AndreasB einen Rat? Nutze ich die falsche JAVA Version?
Ich muss gestehen, ich versuche auch nur das nach zu bauen, was damals von https://github.com/sunsided/portfolio-performance-docker bereit gestellt wurde, nur eben aktueller. Sein Docker funktioniert ebenfalls nicht.

Klingt für mich nach einem Problem mit dem X-Server. Wie sieht denn Deine Konfiguration aus?

Uhm,

Ich bin Anfänger! Jetzt wo du es sagst, das ganze braucht ja noch diesen X11 Server oder? Keine Ahnung wie ich das in Einklang bringe. Muss ich nen X11 Docker finden / ziehen / starten und dann irgendwie verbinden oder so?

So steht es im Readme und klingt ja auch vernünftig, denn irgendwo möchtest Du die GUI ja vermutlich sichtbar machen.

Warum möchtest Du denn PP in einem Docker-Container laufen lassen? Docker ist ja nur ein Werkzeug.

Sehr gute Frage! … Mein Onkel hat mich gefragt und ich dachte „mach ich schnell“ :smiley:

Ich denke der Vorteil dann wäre, dass ich PP Geräteübergreifend hätte.

Hab keine Ahnung von Docker, aber in Deinem File steht

-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \

Lies mal dazu z.B. https://forums.docker.com/t/x11-forwarding-with-v-on-docker-run-not-working/17708/2

1 Like

Du weißt, dass Du einfach die Portfolio-Datei auf das NAS oder in die Cloud legen kannst und dann von überall darauf zugreifen? Dazu brauchst Du nicht PP zentral zu installieren.
Siehe auch:

An anderer Stelle wurde die Nutzung einer virtuellen Maschine diskutiert: PP auf Synology Server einrichten Ich würde mich nicht unbedingt auf Docker einschießen. Du musst Dir, wie Du gemerkt hast, Gedanken darüber machen, wie ein Nutzer auf die GUI zugreifen soll.

Aber dann könnte ich das doch im Browser aufrufen? Ergo, ich hätte es auch beispielsweise auf einem Windows / Apple Tablet :slight_smile:

Allein weil es in Docker läuft? Nein, sorry. Das hat nichts direkt miteinander zu tun.

Bitte wirf mal einen Blick hier hinein:

Um von einem Tablet aus auf PP zugreifen zu können, kann Dir eine Remote-Desktop-Lösung helfen, wenn PP selbst auf dem Tablet nicht läuft. Das Ziel der Remote-Desktop-Verbindung könnte in einem Docker-Container laufen (oder auch nicht).

Ich würde Dir solch eine Lösung nicht anraten, es sei denn Du betrachtest es als Lernübung/Spielwiese :wink:

Vielleicht hilft dir das ja weiter:

Ich würde mich auch über Portfolio Performance in Docker freuen um es am iPad nutzen zu können :slight_smile: