feat: add environment variable puid and pgid #2011
This commit is contained in:
26
docker/entrypoint/docker-entrypoint.d/00-user-setup.sh
Executable file
26
docker/entrypoint/docker-entrypoint.d/00-user-setup.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
HOMARR_USER_PATHS="/app/data /app/public/icons"
|
||||
|
||||
for path in $HOMARR_USER_PATHS
|
||||
do
|
||||
if [ ! -d "$path" ]; then
|
||||
mkdir -p $path
|
||||
fi
|
||||
|
||||
find $path ! -user $PUID -print0 | while read -d $'\0' FILE
|
||||
do
|
||||
echo "${FILE} is not own by current user, fixing..."
|
||||
chown $PUID:$PGID ${FILE}
|
||||
done
|
||||
done
|
||||
|
||||
echo Setting homarr UID to $PUID and GID to $PGID please wait...
|
||||
usermod -u $PUID homarr
|
||||
groupmod -g $PGID homarr
|
||||
|
||||
DOCKER_GID=$(stat -c %g /var/run/docker.sock 2>/dev/null)
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "SETTING DOCKER GID TO ${DOCKER_GID}"
|
||||
groupmod -g $DOCKER_GID docker
|
||||
fi
|
||||
68
docker/entrypoint/entrypoint.sh
Executable file
68
docker/entrypoint/entrypoint.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/sh
|
||||
# vim:sw=4:ts=4:et
|
||||
|
||||
set -e
|
||||
echo "Entering entrypoint..."
|
||||
|
||||
echo "Param \$1: $1"
|
||||
echo "User: "$(whoami)
|
||||
|
||||
|
||||
entrypoint_log() {
|
||||
if [ -z "${NGINX_ENTRYPOINT_QUIET_LOGS:-}" ]; then
|
||||
echo "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then
|
||||
entrypoint_log "$0: /docker-entrypoint.d/ is not empty, will attempt to perform configuration"
|
||||
|
||||
entrypoint_log "$0: Looking for shell scripts in /docker-entrypoint.d/"
|
||||
find "/docker-entrypoint.d/" -follow -type f -print | sort -V | while read -r f; do
|
||||
case "$f" in
|
||||
*.envsh)
|
||||
if [ -x "$f" ]; then
|
||||
entrypoint_log "$0: Sourcing $f";
|
||||
. "$f"
|
||||
else
|
||||
# warn on shell scripts without exec bit
|
||||
entrypoint_log "$0: Ignoring $f, not executable";
|
||||
fi
|
||||
;;
|
||||
*.sh)
|
||||
if [ -x "$f" ]; then
|
||||
entrypoint_log "$0: Launching $f";
|
||||
"$f"
|
||||
else
|
||||
# warn on shell scripts without exec bit
|
||||
entrypoint_log "$0: Ignoring $f, not executable";
|
||||
fi
|
||||
;;
|
||||
*) entrypoint_log "$0: Ignoring $f";;
|
||||
esac
|
||||
done
|
||||
|
||||
entrypoint_log "$0: Configuration complete; ready for start up"
|
||||
else
|
||||
entrypoint_log "$0: No files found in /docker-entrypoint.d/, skipping configuration"
|
||||
fi
|
||||
|
||||
#exec "$@"
|
||||
|
||||
# sys container init:
|
||||
#
|
||||
# If no command is passed to the container, supervisord becomes init and
|
||||
# starts all its configured programs (per /etc/supervisord.conf).
|
||||
#
|
||||
# If a command is passed to the container, it runs in the foreground;
|
||||
# supervisord runs in the background and starts all its configured
|
||||
# programs.
|
||||
#
|
||||
# In either case, supervisord always starts its configured programs.
|
||||
|
||||
if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
|
||||
exec supervisord -n "$@"
|
||||
else
|
||||
supervisord -c /etc/supervisord.conf &
|
||||
exec "$@"
|
||||
fi
|
||||
Reference in New Issue
Block a user