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

1 Like