diff --git a/entrypoint.sh b/entrypoint.sh index b0258a2..62f498f 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,15 +1,23 @@ #!/bin/bash set -eu -# Arranca como root (USER no está fijado en el Dockerfile, así Docker usa root). -# En el primer arranque, /work/data es el punto de montaje del volumen named -# shot-crafter-data: Docker lo crea con owner root:root, lo que impide al UID -# 1001 (con el que corre la app) escribir. Tomamos root brevemente para -# arreglar los permisos, y después setpriv baja al UID 1001 para la app. -mkdir -p /work/data -chown -R 1001:1001 /work/data || { - echo "WARNING: failed to chown /work/data (root filesystem?); app may fail to start" >&2 -} -chmod 0755 /work +echo "[entrypoint] pid=$$ uid=$(id -u) gid=$(id -g)" +echo "[entrypoint] /work/data BEFORE chown:" +ls -ldn /work/data 2>&1 || true +ls -la /work/data 2>&1 | head -50 || true +mkdir -p /work/data +chown -R 1001:1001 /work/data 2>&1 || { + rc=$? + echo "[entrypoint] WARNING chown /work/data rc=$rc (continuamos; la app puede fallar)" +} + +echo "[entrypoint] /work/data AFTER chown:" +ls -ldn /work/data 2>&1 || true + +# Tambien asegura que el binario sea del app user (por si la imagen viene con owner root) +chown -R 1001:1001 /work 2>&1 || true +chmod 0755 /work /work/application 2>&1 || true + +echo "[entrypoint] dropping to UID 1001 via setpriv" exec setpriv --reuid=1001 --regid=1001 --init-groups -- /work/application "$@"