Problem bei Update auf 26.1

Problem

Nach einem Update auf Relution 26.1 startet der Docker-Container nicht mehr. Im Container-Log erscheint wiederholt folgender Fehler:

Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: java.io.IOException: Permission denied
    at java.base/java.io.File.createTempFile(File.java:2184)
    at io.relution.boot.Main.checkTempDirectory(Main.java:291)
    at io.relution.boot.Main.main(Main.java:216)

Ursache

Mit Version 26.1 wurde die ID des Benutzers im Container aufgrund von aktualisierten Sicherheits-Best-Practices geändert. Das bestehende Temp-Verzeichnis (/tmp) im Docker-Volume gehört dadurch einem falschen Benutzer, weshalb der Relution-Dienst beim Start keinen Schreibzugriff hat und abbricht. Dies lässt sich leider nicht automatisch beim Update beheben.

Beim Start prüft der Dienst den Zugriff auf das Temp-Verzeichnis:

  • Ist es nicht vorhanden, wird es neu angelegt (mit korrekten Berechtigungen).
  • Ist es vorhanden, versucht er es zu leeren – was mit falschen Berechtigungen fehlschlägt.

Lösung

Mit dem folgenden Befehl wird der Relution-Container inklusive des Volumes neu erzeugt.

docker compose up -d --force-recreate --renew-anon-volumes --no-deps relution

Ersetzen Sie relution ggf. durch den tatsächlichen Service-Namen Ihres Containers.

Nach dem Neustart legt Relution das relution.tmp-Verzeichnis mit den korrekten Berechtigungen selbstständig neu an. Der Fehler Permission denied tritt nicht mehr auf und der Dienst startet normal.

Weitere Hinweise

  • Dieser Fehler tritt ausschließlich bei Updates von einer älteren Version auf 26.1 auf, da das Verzeichnis mit den alten Berechtigungen bereits existiert.
  • Bei Neuinstallationen ab Version 26.1 ist das Problem nicht vorhanden.
  • Sollte der Fehler nach diesen Schritten weiterhin auftreten, prüfen Sie, ob weitere Volume-Mounts eigene tmp-Verzeichnisse enthalten.