27 lines
943 B
Bash
Executable File
27 lines
943 B
Bash
Executable File
#!/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 "$@"
|