Problème lors de la mise à jour vers 26.1

Problème

Après une mise à jour vers Relution 26.1, le conteneur Docker ne démarre plus. Le journal du conteneur affiche de manière répétée l’erreur suivante :

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)

Cause

Avec la version 26.1, l’ID de l’utilisateur dans le conteneur a été modifié en raison de bonnes pratiques de sécurité mises à jour. Le répertoire temporaire existant (/tmp) dans le volume Docker appartient désormais à un utilisateur incorrect, ce qui empêche le service Relution d’obtenir un accès en écriture au démarrage et provoque son arrêt. Malheureusement, cela ne peut pas être corrigé automatiquement lors de la mise à jour.

Au démarrage, le service vérifie l’accès au répertoire temporaire :

  • S’il n’existe pas, il est recréé (avec les bonnes permissions).
  • S’il existe déjà, le service tente de le vider – ce qui échoue avec des permissions incorrectes.

Solution

La commande suivante recrée le conteneur Relution, y compris le volume.

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

Remplacez relution le cas échéant par le nom de service réel de votre conteneur.

Après le redémarrage, Relution recrée automatiquement le répertoire relution.tmp avec les permissions correctes. L’erreur Permission denied ne se produit plus et le service démarre normalement.

Remarques complémentaires

  • Cette erreur se produit uniquement lors des mises à jour d’une version antérieure vers 26.1, car le répertoire existe déjà avec les anciennes permissions.
  • Pour les nouvelles installations à partir de la version 26.1, ce problème ne se produit pas.
  • Si l’erreur persiste après ces étapes, vérifiez si d’autres montages de volumes contiennent leurs propres répertoires tmp.
Top