#!/bin/sh # # Aligne la propriété du répertoire de données avant de lâcher les privilèges. # # /app/data est un bind mount : le `chown` fait au build ne sert à rien, il est # masqué dès que Docker monte le répertoire de l'hôte par-dessus. Or Docker crée # ce répertoire en root:root quand il n'existe pas, et le serveur tourne sous # l'utilisateur `node` — SQLite échoue alors avec « unable to open database file ». set -e if [ "$(id -u)" = "0" ]; then mkdir -p /app/data # Uniquement si nécessaire : sur un volume nommé la propriété est déjà bonne, # et un chown -R inutile ferait du bruit à chaque démarrage. if [ "$(stat -c %u /app/data)" != "$(id -u node)" ]; then echo "entrypoint: alignement de /app/data sur l'utilisateur node" chown -R node:node /app/data fi exec su-exec node "$@" fi # Un `user:` explicite dans le compose court-circuite la bascule : on exécute tel quel. exec "$@"