Problem bei Update auf 26.1
Relution 26.1 – Docker-Container startet nicht (Permission denied auf Temp-Verzeichnis)
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 wurden die Berechtigungen auf das interne Temp-Verzeichnis (relution.tmp) geändert. Das bestehende Verzeichnis im Docker-Volume gehört dadurch einem falschen Benutzer, weshalb der Relution-Dienst beim Start keinen Schreibzugriff hat und abbricht.
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
Schritt 1 – Docker-Container stoppen
Stoppen Sie den betroffenen Relution-Container, bevor Sie Änderungen am Volume vornehmen:
docker stop <container-name>
Ersetzen Sie
<container-name>durch den tatsächlichen Namen Ihres Containers, z. B.docker_relution.
Schritt 2 – Temp-Verzeichnis im Volume lokalisieren
Wechseln Sie in das Docker-Volumes-Verzeichnis und suchen Sie das betroffene Verzeichnis:
cd /var/lib/docker/volumes
find -type d -name relution.tmp
Die Ausgabe zeigt den vollständigen Pfad zum Verzeichnis, zum Beispiel:
./relution_data/_data/relution.tmp
Schritt 3 – Temp-Verzeichnis entfernen
Löschen Sie das Verzeichnis, solange der Container gestoppt ist:
find -type d -name relution.tmp -exec rm -rvf "{}" \;
Hinweis: Das Löschen ist sicher. Relution legt das Verzeichnis beim nächsten Start automatisch mit den korrekten Berechtigungen neu an. Es befinden sich keine dauerhaften Daten in diesem Verzeichnis.
Schritt 4 – Docker-Container wieder starten
Starten Sie den Container neu:
docker start <container-name>
Überprüfen Sie anschließend die Logs, um sicherzustellen, dass der Dienst erfolgreich gestartet ist:
docker logs -f <container-name> --since=5m
Erwartetes Ergebnis
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.