fix: handle users at Dockerfile instead of in entrypoint script.

This commit is contained in:
Robert Wlodarczyk 2025-01-11 11:57:27 -08:00
parent 176cb2e29c
commit 7725e2f697

View File

@ -2,7 +2,6 @@
set -e
DOCKER_SOCK=/var/run/docker.sock
CRONTAB_FILE=/etc/crontabs/docker
if [ -z "${HOME_DIR}" ] && [ -n "${TEST_MODE}" ]; then
@ -35,27 +34,6 @@ normalize_config() {
jq -S -r '."~~shared-settings" as $shared | del(."~~shared-settings") | to_entries | map_values(.value + { name: .key } + $shared)' <<< "${JSON_CONFIG}" > "${HOME_DIR}"/config.working.json
}
ensure_docker_socket_accessible() {
if ! grep -q "^docker:" /etc/group; then
# Ensure 'docker' user has permissions for docker socket (without changing permissions).
DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCK})
if [ "${DOCKER_GID}" != "0" ]; then
if ! grep -qE "^[^:]+:[^:]+:${DOCKER_GID}:" /etc/group; then
# No group with such gid exists - create group 'docker'.
addgroup -g "${DOCKER_GID}" docker
adduser docker docker
else
# Group with such gid exists - add user 'docker' to this group.
DOCKER_GROUP_NAME=$(getent group "${DOCKER_GID}" | awk -F':' '{{ print $1 }}')
adduser docker "${DOCKER_GROUP_NAME}"
fi
else
# Docker socket belongs to 'root' group - add user 'docker' to this group.
adduser docker root
fi
fi
}
slugify() {
echo "${@}" | iconv -t ascii | sed -r s/[~^]+//g | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr '[:upper:]' '[:lower:]'
}
@ -256,8 +234,5 @@ start_app() {
exec "${@}"
}
if [ -z "${TEST_MODE}" ]; then
ensure_docker_socket_accessible
fi
printf "✨ starting crontab container ✨\n"
start_app "${@}"