mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2026-01-10 01:51:14 +00:00
REL-0.1 Initial Release
This commit is contained in:
140
Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh
Executable file
140
Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh
Executable file
@@ -0,0 +1,140 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Available global variables:
|
||||
# + MY_USER
|
||||
# + MY_GROUP
|
||||
# + DEBUG_LEVEL
|
||||
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
|
||||
############################################################
|
||||
# Functions
|
||||
############################################################
|
||||
|
||||
###
|
||||
### Log to stdout/stderr
|
||||
###
|
||||
log() {
|
||||
log_lvl="${1}"
|
||||
log_msg="${2}"
|
||||
|
||||
log_clr_ok="\033[0;32m"
|
||||
log_clr_info="\033[0;34m"
|
||||
log_clr_warn="\033[0;33m"
|
||||
log_clr_err="\033[0;31m"
|
||||
log_clr_rst="\033[0m"
|
||||
|
||||
if [ "${log_lvl}" = "ok" ]; then
|
||||
if [ "${DEBUG_LEVEL}" -gt "0" ]; then
|
||||
printf "${log_clr_ok}[OK] %s${log_clr_rst}\n" "${log_msg}"
|
||||
fi
|
||||
elif [ "${log_lvl}" = "info" ]; then
|
||||
if [ "${DEBUG_LEVEL}" -gt "0" ]; then
|
||||
printf "${log_clr_info}[INFO] %s${log_clr_rst}\n" "${log_msg}"
|
||||
fi
|
||||
elif [ "${log_lvl}" = "warn" ]; then
|
||||
printf "${log_clr_warn}[WARN] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr
|
||||
elif [ "${log_lvl}" = "err" ]; then
|
||||
printf "${log_clr_err}[ERR] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr
|
||||
else
|
||||
printf "${log_clr_err}[???] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr
|
||||
fi
|
||||
|
||||
unset -v log_lvl
|
||||
unset -v log_msg
|
||||
unset -v log_clr_ok
|
||||
unset -v log_clr_info
|
||||
unset -v log_clr_warn
|
||||
unset -v log_clr_err
|
||||
unset -v log_clr_rst
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Wrapper for run_run command
|
||||
###
|
||||
run() {
|
||||
run_cmd="${1}"
|
||||
|
||||
run_clr_red="\033[0;31m"
|
||||
run_clr_green="\033[0;32m"
|
||||
run_clr_reset="\033[0m"
|
||||
|
||||
if [ "${DEBUG_LEVEL}" -gt "1" ]; then
|
||||
printf "${run_clr_red}%s \$ ${run_clr_green}${run_cmd}${run_clr_reset}\n" "$( whoami )"
|
||||
fi
|
||||
/bin/sh -c "LANG=C LC_ALL=C ${run_cmd}"
|
||||
|
||||
unset -v run_cmd
|
||||
unset -v run_clr_red
|
||||
unset -v run_clr_green
|
||||
unset -v run_clr_reset
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Is argument an integer?
|
||||
###
|
||||
isint() {
|
||||
echo "${1}" | grep -Eq '^([0-9]|[1-9][0-9]*)$'
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Is env variable set?
|
||||
###
|
||||
env_set() {
|
||||
if set | grep "^${1}=" >/dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Get env variable by name
|
||||
###
|
||||
env_get() {
|
||||
if ! env_set "${1}"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
env_get_value="$( set | grep "^${1}=" | awk -F '=' '{for (i=2; i<NF; i++) printf $i "="; print $NF}' )"
|
||||
|
||||
# Remove surrounding quotes
|
||||
env_get_value="$( echo "${env_get_value}" | sed "s/^'//g" )"
|
||||
env_get_value="$( echo "${env_get_value}" | sed 's/^"//g' )"
|
||||
|
||||
env_get_value="$( echo "${env_get_value}" | sed "s/'$//g" )"
|
||||
env_get_value="$( echo "${env_get_value}" | sed 's/"$//g' )"
|
||||
|
||||
echo "${env_get_value}"
|
||||
unset -v env_get_value
|
||||
}
|
||||
|
||||
|
||||
|
||||
############################################################
|
||||
# Sanity Checks
|
||||
############################################################
|
||||
|
||||
if ! command -v grep >/dev/null 2>&1; then
|
||||
log "err" "grep not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v sed >/dev/null 2>&1; then
|
||||
log "err" "sed not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v awk >/dev/null 2>&1; then
|
||||
log "err" "awk not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v getent >/dev/null 2>&1; then
|
||||
log "err" "getent not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
22
Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh
Executable file
22
Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
|
||||
############################################################
|
||||
# Functions
|
||||
############################################################
|
||||
|
||||
###
|
||||
### Debug level
|
||||
###
|
||||
get_debug_level() {
|
||||
if ! env_set "${1}"; then
|
||||
# Return default specified value
|
||||
echo "${2}"
|
||||
else
|
||||
# Return env value
|
||||
env_get "${1}"
|
||||
fi
|
||||
}
|
||||
104
Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh
Executable file
104
Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Available global variables:
|
||||
# + MY_USER
|
||||
# + MY_GROUP
|
||||
# + DEBUG_LEVEL
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
|
||||
############################################################
|
||||
# Functions
|
||||
############################################################
|
||||
|
||||
###
|
||||
### Change UID
|
||||
###
|
||||
set_uid() {
|
||||
uid_varname="${1}"
|
||||
|
||||
if ! env_set "${uid_varname}"; then
|
||||
log "info" "\$${uid_varname} not set. Keeping default uid for '${MY_USER}'."
|
||||
else
|
||||
uid_env_uid="$( env_get "${uid_varname}" )"
|
||||
|
||||
if ! isint "${uid_env_uid}"; then
|
||||
log "err" "\$${uid_varname} is not an integer: '${uid_env_uid}'"
|
||||
exit 1
|
||||
else
|
||||
if uid_getent_row="$( getent passwd "${uid_env_uid}" )"; then
|
||||
uid_getent_name="$( echo "${uid_getent_row}" | awk -F ':' '{print $1}' )"
|
||||
if [ "${uid_getent_name}" != "${MY_USER}" ]; then
|
||||
log "warn" "User with ${uid_env_uid} already exists: ${uid_getent_name}"
|
||||
log "info" "Changing UID of ${uid_getent_name} to 9999"
|
||||
run "usermod -u 9999 ${uid_getent_name}"
|
||||
fi
|
||||
fi
|
||||
log "info" "Changing user '${MY_USER}' uid to: ${uid_env_uid}"
|
||||
run "usermod -u ${uid_env_uid} ${MY_USER}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fix homedir permissions
|
||||
run "chown -R ${MY_USER} /home/${MY_USER}"
|
||||
|
||||
unset -v uid_varname
|
||||
unset -v uid_env_uid
|
||||
unset -v uid_getent_row
|
||||
unset -v uid_getent_name
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Change GID
|
||||
###
|
||||
set_gid() {
|
||||
gid_varname="${1}"
|
||||
|
||||
if ! env_set "${gid_varname}"; then
|
||||
log "info" "\$${gid_varname} not set. Keeping default gid for '${MY_GROUP}'."
|
||||
else
|
||||
# Retrieve the value from env
|
||||
gid_env_gid="$( env_get "${gid_varname}" )"
|
||||
|
||||
if ! isint "${gid_env_gid}"; then
|
||||
log "err" "\$${gid_varname} is not an integer: '${gid_env_gid}'"
|
||||
exit 1
|
||||
else
|
||||
if gid_getent_row="$( getent group "${gid_env_gid}" )"; then
|
||||
gid_getent_name="$( echo "${gid_getent_row}" | awk -F ':' '{print $1}' )"
|
||||
if [ "${gid_getent_name}" != "${MY_GROUP}" ]; then
|
||||
log "warn" "Group with ${gid_env_gid} already exists: ${gid_getent_name}"
|
||||
log "info" "Changing GID of ${gid_getent_name} to 9999"
|
||||
run "groupmod -g 9999 ${gid_getent_name}"
|
||||
fi
|
||||
fi
|
||||
log "info" "Changing group '${MY_GROUP}' gid to: ${gid_env_gid}"
|
||||
run "groupmod -g ${gid_env_gid} ${MY_GROUP}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fix homedir permissions
|
||||
run "chown -R :${MY_GROUP} /home/${MY_USER}"
|
||||
|
||||
unset -v gid_varname
|
||||
unset -v gid_env_gid
|
||||
unset -v gid_getent_row
|
||||
unset -v gid_getent_name
|
||||
}
|
||||
|
||||
|
||||
############################################################
|
||||
# Sanity Checks
|
||||
############################################################
|
||||
|
||||
if ! command -v usermod >/dev/null 2>&1; then
|
||||
log "err" "usermod not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
if ! command -v groupmod >/dev/null 2>&1; then
|
||||
log "err" "groupmod not found, but required."
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user