Files
Encelado/Encelado/deploy/docker/entrypoint.sh
T
Alby96andClaude Fable 5.1 d7559d36a5 5.0 Fase 8: immagine Docker come pacchetto, template Unraid, catena senza Inno Setup
Il container è la sola forma di esecuzione (ADR-0008): Dockerfile multi-stage con i
test dentro la build, entrypoint con TZ e PUID/PGID, compose per le prove locali,
healthcheck via --health. Il template Unraid installa dall'immagine sul registro di
Gitea con l'icona servita dal repository (D-29). La catena di rilascio pubblica la
cartella portabile, costruisce l'immagine, tagga a pacchetto pronto e spinge
l'immagine sul registro con lo stesso token della release; l'installatore Windows
non ha più senso e viene tolto.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-23 13:26:12 +02:00

36 lines
1.2 KiB
Bash

#!/bin/sh
# Encelado — entrypoint del container.
#
# 1. Fuso orario da TZ (tzdata è nell'immagine).
# 2. Utente e gruppo da PUID/PGID (default 99/100, i «nobody:users» di Unraid):
# /config e /data vengono riassegnati a quell'utente, così i file scritti dal
# bot sono leggibili dalla share appdata senza giochi di permessi.
# 3. exec del processo finale con gosu: PID 1 è dotnet, SIGTERM arriva a lui.
#
# Con PUID=0 il bot resta root: sconsigliato, ma ammesso per il debug.
set -eu
PUID="${PUID:-99}"
PGID="${PGID:-100}"
if [ -n "${TZ:-}" ] && [ -f "/usr/share/zoneinfo/${TZ}" ]; then
ln -sf "/usr/share/zoneinfo/${TZ}" /etc/localtime
echo "${TZ}" > /etc/timezone
fi
if [ "${PUID}" != "0" ]; then
if ! getent group "${PGID}" >/dev/null 2>&1; then
groupadd -g "${PGID}" encelado
fi
if ! getent passwd "${PUID}" >/dev/null 2>&1; then
useradd -r -o -u "${PUID}" -g "${PGID}" -M -d /data -s /usr/sbin/nologin encelado
fi
mkdir -p /config /data
chown -R "${PUID}:${PGID}" /config /data
echo "encelado: avvio come uid ${PUID} gid ${PGID}, fuso ${TZ:-UTC}"
exec gosu "${PUID}:${PGID}" "$@"
fi
echo "encelado: avvio come root (PUID=0), fuso ${TZ:-UTC}"
exec "$@"