forked from vikunja/vikunja
51 lines
1.4 KiB
Bash
51 lines
1.4 KiB
Bash
#!/usr/bin/env sh
|
|
set -e
|
|
|
|
# usage: file_env VAR [DEFAULT]
|
|
# Set $VAR to the contents of the path specified by $VAR_FILE. Useful for docker secrets
|
|
file_env() {
|
|
VAR="$1"
|
|
FILE_VAR="${VAR}_FILE"
|
|
eval "VAR_EXPANDED=\"\${$VAR}\""
|
|
eval "FILE_VAR_EXPANDED=\"\${$FILE_VAR}\""
|
|
DEFAULT="${2:-}"
|
|
|
|
if [ "${VAR_EXPANDED:-}" ] && [ "${FILE_VAR_EXPANDED:-}" ]; then
|
|
echo >&2 "error: both $VAR and $FILE_VAR are set (but are exclusive)"
|
|
exit 1
|
|
fi
|
|
|
|
VAL="$DEFAULT"
|
|
if [ "${VAR_EXPANDED:-}" ]; then
|
|
VAL="${VAR_EXPANDED}"
|
|
elif [ "${FILE_VAR_EXPANDED:-}" ]; then
|
|
if [ -f "${FILE_VAR_EXPANDED}" ]; then
|
|
VAL="$(cat "${FILE_VAR_EXPANDED}")"
|
|
else
|
|
echo >&2 "error: couldn't find file at '$FILE_VAR_EXPANDED'"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
export "$VAR"="$VAL"
|
|
unset "$FILE_VAR"
|
|
}
|
|
|
|
# Substitue all env vars starting with VIKUNJA and ending with _FILE
|
|
for var in $(env | sed -n "s/^\(VIKUNJA.*\)_FILE=.*$/\1/p"); do
|
|
file_env "${var}"
|
|
done
|
|
|
|
if [ -n "$PUID" ] && [ "$PUID" -ne 0 ] && \
|
|
[ -n "$PGID" ] && [ "$PGID" -ne 0 ] ; then
|
|
echo "info: creating the new user vikunja with $PUID:$PGID"
|
|
groupmod -g "$PGID" -o vikunja
|
|
usermod -u "$PUID" -o vikunja
|
|
chown -R vikunja:vikunja ./files/
|
|
chown vikunja:vikunja .
|
|
exec su vikunja -c /app/vikunja/vikunja "$@"
|
|
else
|
|
echo "info: creation of non-root user is skipped"
|
|
exec /app/vikunja/vikunja "$@"
|
|
fi
|