Docker: Support for setting cron schedule, PUID, GUID and time zone via env vars.
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 33s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 33s
This commit is contained in:
@@ -1,4 +1,49 @@
|
||||
#! /bin/sh
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "${SCHEDULE} sh nsupdate.sh" >> /etc/crontabs/root
|
||||
crond -l 2 -f > /dev/stdout 2> /dev/stderr &
|
||||
COMMAND="/usr/local/bin/nsupdate.sh"
|
||||
|
||||
# Default schedule if not specified
|
||||
SCHEDULE="${SCHEDULE:-* * * * *}"
|
||||
|
||||
# Default cron log level if not specified
|
||||
CRON_LOG_LEVEL="${CRON_LOG_LEVEL:-2}"
|
||||
|
||||
# Default user name not specified
|
||||
USERNAME="${USERNAME:-nsupdate}"
|
||||
|
||||
# Default UID and GID if not specified
|
||||
PUID=${PUID:-1000}
|
||||
PGID=${PGID:-1000}
|
||||
|
||||
# Default timezone if not specified
|
||||
TZ=${TZ:-Etc/UTC}
|
||||
|
||||
# Set the timezone
|
||||
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
|
||||
echo "$TZ" >/etc/timezone
|
||||
echo "Timezone set to $TZ"
|
||||
|
||||
# Create group if it doesn't exist yet
|
||||
if ! getent group "$USERNAME" > /dev/null 2>&1; then
|
||||
addgroup -g "$PGID" "$USERNAME"
|
||||
fi
|
||||
|
||||
# Create user if it doesn't exist yet
|
||||
if ! getent passwd "$USERNAME" > /dev/null 2>&1; then
|
||||
adduser -u "$PUID" -G "$USERNAME" -D -H -s /bin/false "$USERNAME"
|
||||
fi
|
||||
|
||||
CRON_FILE="/etc/crontabs/$USERNAME"
|
||||
mkdir -p /etc/crontabs
|
||||
printf '%s %s\n' "$SCHEDULE" "$COMMAND" > "$CRON_FILE"
|
||||
chmod 600 "$CRON_FILE"
|
||||
|
||||
# Set correct permissions
|
||||
chown -R "$USERNAME":"$USERNAME" /config
|
||||
chown -R "$USERNAME":"$USERNAME" /log
|
||||
echo "Permissions adjusted"
|
||||
|
||||
# Start nsupdate in the foreground with reduced warnings
|
||||
echo "Starting cron..."
|
||||
exec crond -l "${CRON_LOG_LEVEL}" -f
|
||||
Reference in New Issue
Block a user