Portfolio Performance in Docker

Eine Frage und Vergebung für mein Deutsch, da ich nur Englisch und Spanisch spreche.
Ich kann nicht auf mein Aktionsdiagramm zugreifen, da in der Docker-Installation kein Browser verknüpft ist.
Jemand hat es aussortiert.

Ja, ein Browser funktioniert im Container leider nicht. Man könnte zwar mit add-pkg chromium einen installieren aber das reicht nicht aus. Portfolio kann keine Verbindung zum Browser herstellen. Man müsste irgendwo in den configs den Pfad des installierten Browsers hinterlegen können, aber ich wüsste nicht wo…

Hallo Zusammen!
Ich bin heute früh hierauf gestoßen, und damit erstmal vielen Dank an alle, die die Funktionalität soweit gebracht haben.
Das mit den fehlenden Diagrammen hat mich gestört, deswegen habe ich mich da ran gesetzt und möchte hier jetzt mit euch teilen, was ich ändern/machen musste damit diese gehen:

Das angepasste Dockerfile (Hinzufügen von firefox und webkit2gtk):

# Pull base image.
FROM jlesage/baseimage-gui:alpine-3.12-glibc

ENV VERSION 0.53.3
ENV ARCHIVE https://github.com/buchen/portfolio/releases/download/${VERSION}/PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz
ENV APP_ICON_URL=https://www.portfolio-performance.info/images/logo.png
	
RUN apk --no-cache add ca-certificates wget && update-ca-certificates && \
	cd /opt && wget ${ARCHIVE} && tar xvzf PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz && \
	rm PortfolioPerformance-${VERSION}-linux.gtk.x86_64.tar.gz

RUN \
    add-pkg \
        openjdk11-jre \
        webkit2gtk \
		gtk+3.0

RUN \
	sed -i '1s;^;-configuration\n/opt/portfolio/configuration\n-data\n/opt/portfolio/workspace\n;' /opt/portfolio/PortfolioPerformance.ini && \
	echo "osgi.nl=de" >> /opt/portfolio/configuration/config.ini && \
	chmod -R 777 /opt/portfolio && \
    install_app_icon.sh "$APP_ICON_URL"

# Copy the start script.
COPY startapp.sh /startapp.sh

# Set the name of the application.
ENV APP_NAME="Portfolio Performance"

Das startup.sh-Skript habe ich nicht geändert:

#!/bin/sh
cd /opt/portfolio/workspace
exec /opt/portfolio/PortfolioPerformance

Zum Ausführen nutze ich folgenden Befehl:

docker run -d \
    --name PortfolioPerformance \
    -v <HierEigenerPfad>:/opt/portfolio/workspace \
    -p 5800:5800 \
    -e KEEP_APP_RUNNING=1 \
    -e USER_ID=1000 \
    -e GROUP_ID=1000 \
    -e TZ="Europe/Berlin" \
    -e DISPLAY_WIDTH=1920 \
    -e DISPLAY_HEIGHT=910 \
    -e VNC_PASSWORD="HierEigenesPasswort" \
    portfolio

Ich habe hier den User und die Group geändert, da ich nicht wollte das der Zugriff auf den Host über root läuft, sowie VNC mit einem Passwort versehen und die Bildschirmauflösung angepasst.

Darüber hinnaus evtl. auch interessant, daher hier noch die Nginx-Konfiguration die ich dafür nutze:

server {
    if ($host = <HierEigeneDomain>) {
        return 301 https://$host;
    }

    listen 80;
    listen [::]:80;

    server_name <HierEigeneDomain>;

    return 404;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/<HierEigeneDomain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<HierEigeneDomain>/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    server_name <HierEigeneDomain>;

    access_log /var/log/nginx/portfolio.access.log;
    error_log /var/log/nginx/portfolio.error.log;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        client_max_body_size 0;

        proxy_pass http://127.0.0.1:5800/;
    }
}

(Offensichtlich werden hier viele Annahmen getroffen (z.B. Zertifikate von letsencrypt, log-Pfade etc., aber ggF. ist es ja dennoch hilfreich als Einstieg :slight_smile:)

Damit ist der Zugriff dank Nginx+Certs verschlüsselt, und VNC fragt zuerst nach dem eingestellten Passwort. Die Auflösung ist so gewählt, dass (zumindest bei mir) in einem Maximierten Firefox mit Lesezeichenleiste der Webseitenbereich fast genau ausgefüllt wird :smiley:

Edit: In der ursprünglichen Version hatte ich zusätzlich noch Firefox in den Container installiert, @Loader23 hat mich aber kor­rek­ter­wei­se darauf hingewiesen (Danke!), dass dieser nicht notwendig ist, daher nun entfernt.

1 Like

Ich habe die Diagramme nie benutzt bzw. darauf geachtet aber ist auf jeden Fall eine gute Erweiterung. Bzw. eher ein notwendiger Fix :slight_smile:
Aber wofür wird Firefox installiert? Die Diagramme haben auch nur durch das hinzufügen von webkit funktioniert, oder übersehe ich da etwas?

Tatsächlich hatte ich zunächst probiert ob es nur mit Firefox im Container geht (ging nicht) und bin danach erst auf webkit2gtk gestoßen - habe dann nicht mehr getestet, ob das Firefox wieder raus kann, ist also durchaus möglich.

Edit: Habe es gerade noch mal getestet, geht auch ohne Firefox im Container. Bearbeite das auch im Post von gestern.

Alles klar, hätte ja sein können, dass ich irgendeine Funktionalität übersehen habe :slight_smile:

Habe es im Startpost auch angepasst.

1 Like

Hallo,

ich nutze PP lokal auf dem Win10 Laptop. Wollte nun auf Docker wechseln. Docker-Compose wie folgt. Startet auch.

version: "3"
services:
  portfolio:
    image: ghcr.io/dtpnk/docker-portfolio/docker-portfolio:latest
    container_name: portfolio
    restart: unless-stopped
    ports:
      - 5801:5800
    volumes:
      - /mnt/portfolio:/opt/portfolio/workspace
      - config:/config
    environment:
      KEEP_APP_RUNNING: 1
      USER_ID: 0
      GROUP_ID: 0
      TZ: "Europe/Berlin" 

volumes:
  config:

Wenn ich meine XML Datei … die am Laptop funktioniert … lade kommt eine Fehlermeldung.

Error

Hat jemand einen Tipp für mich?

Hallo rak,

sind die PP-Versionen auch identisch (in Docker und auf Laptop)?
Oftmals sind die Docker-Images nicht ganz aktuell.

@habak , ja. Beide sind 0.55. Einmal natürlich Linux (Docker) und auf der anderen Seite win32 (Laptop).

Hallo rak,

probiere mal das Image selbst zu bauen wie oben beschrieben. Ich habe die Version nochmal angepasst, brauchst nur kopieren und einfügen :slight_smile: .

1 Like

Hallo Loader23,

das läuft. Danke für den Tipp. Ich habe mir erlaubt alle relevanten Files in ein git repo zu hauen und eine docker-compose zu basteln. Damit können andere diesen Weg über Docker in der Zukunft vielleicht leichter nach gehen ,-).

Ihr findet das Repo hier:
rklueber/PPDocker: Portfolio Performance in a Docker (github.com)

Gruss
Ralf

2 Likes

Hallo zusammen,

das Thema ist zwar schon was älter, aber vielleicht kann mir jemand helfen.
Zuerst zu mir: ich bin sowohl bei PP als auch bei docker Anfänger. Durch die guten Anleitungen hier und ein bisschen Recherche habe ich es aber geschafft, den Container ans Laufen zu bekommen. Ich habe allerdings das Problem, dass mir auf der Website nur eine schwarze Kiste angezeigt wird. Laut HTML sollte dort ein Canvas sein.

Hat da jemand eine Idee? Danke schon mal.

Beste Grüße

Hallo @invest,

ich habe mir das nochmal angeguckt und vermute folgenden Fehler. Ich gehe jetzt mal davon aus, dass du die Anleitung im ersten Post verwendet hast.
Wenn du die startapp.sh über Windows erstellst, hat diese ein Windows Zeilenende, es muss aber UNIX sein. Ändern kannst du das z.B. mit Notepad++ über Bearbeiten → Format Zeilenende → UNIX.
Ansonsten startet der Container mit der Fehlermeldung, dass die startapp.sh nicht ausgeführt werden kann und im Browser wird dir nur ein schwarzes Fenster angezeigt.
Danach das Image neu bauen und den Container starten :wink:

Ich werde das in der Anleitung nochmal ergänzen :slight_smile:

1 Like

Hallo gibt es mittlerweile die Möglichkeit Portfolio Performance stabil auf Docker laufen zu lassen und mit einer docker compose zu installieren?

Hi,
was meinst du mit stabil? Bei mir läuft der Container seit 2 Jahren stabil :slightly_smiling_face:
Anstatt docker run zu nutzen kannst du natürlich auch compose nutzen.

Wo gibt es denn ein fertiges Image und / bzw. eine docker compose Datei?

Also ich hab es mittlerweile hinbekommen:
Für alle anderern:
In Portainer das Image ghcr.io/devben-io/docker-portfolio/docker-portfolio:latest ziehen und diese Werte im Container mit definieren:
$ docker run -d --name portfolio
-v ${PWD}/workspace:/opt/portfolio/workspace
-p 5800:5800
-e KEEP_APP_RUNNING=1 -e USER_ID=0 -e GROUP_ID=0 -e TZ=“Europe/Berlin”
portfolio:local

Der Container läuft, aber ich erhalte nur einen schwarzen Bildschirm:
grafik

Hat jemand ne Idee? Das läuft auf einem Ubuntu 20.04 LTS vServer

Genau das Problem hab ich, habs genau so eingerichtet

Das Problem bei dem Image ist, dass das Base Image auf 3.15 aktualisiert wurde ohne zu testen. Deswegen läuft meine Anleitung noch mit Alpine 3.12 denn mit 3.15 funktioniert es einfach nicht mehr.

Ich schlage daher vor das Image mit Hilfe meiner Anleitung im ersten Post selbst zu bauen.
Das ist jetzt nicht übermäßig aufwendig und muss auch nur einmal gemacht werden, sofern es bei Portfolio in der Zukunft keine riesigen Änderungen im Code gibt.
Portfolio selbst kann dann problemlos über die Weboberfläche aktualisiert werden :wink:

Hallo,

auf meinem Proxmox-Server läuft Portfolio Performance im Docker soweit einwandfrei.
Am PC alles Perfekt… jedoch kann ich per Tablet und Handy beides Android keine eingaben machen. Die Tastatur geht auf aber er schreibt einfach nicht, jemand eine Idee?

1 Like