mirror of
https://github.com/casjaysdevdocker/bind
synced 2026-01-30 07:11:03 -05:00
🗃️ Update codebase 🗃️
All checks were successful
release-tag / release-image (push) Successful in 18m37s
All checks were successful
release-tag / release-image (push) Successful in 18m37s
rootfs/usr/local/bin/entrypoint.sh rootfs/usr/local/bin/pkmgr rootfs/usr/local/etc/docker/functions/ rootfs/usr/local/etc/docker/init.d/01-tor.sh rootfs/usr/local/etc/docker/init.d/02-named.sh rootfs/usr/local/etc/docker/init.d/03-nginx.sh rootfs/usr/local/etc/docker/init.d/03-php-fpm.sh rootfs/usr/local/etc/docker/init.d/04-php-fpm.sh rootfs/usr/local/etc/docker/init.d/99-nginx.sh rootfs/usr/local/share/template-files/config/env/default.sample rootfs/usr/local/share/template-files/config/env/examples/00-directory.sh rootfs/usr/local/share/template-files/config/env/examples/addresses.sh rootfs/usr/local/share/template-files/config/env/examples/certbot.sh rootfs/usr/local/share/template-files/config/env/examples/couchdb.sh rootfs/usr/local/share/template-files/config/env/examples/dockerd.sh rootfs/usr/local/share/template-files/config/env/examples/global.sh rootfs/usr/local/share/template-files/config/env/examples/healthcheck.sh rootfs/usr/local/share/template-files/config/env/examples/mariadb.sh rootfs/usr/local/share/template-files/config/env/examples/mongodb.sh rootfs/usr/local/share/template-files/config/env/examples/networking.sh rootfs/usr/local/share/template-files/config/env/examples/other.sh rootfs/usr/local/share/template-files/config/env/examples/php.sh rootfs/usr/local/share/template-files/config/env/examples/postgres.sh rootfs/usr/local/share/template-files/config/env/examples/redis.sh rootfs/usr/local/share/template-files/config/env/examples/services.sh rootfs/usr/local/share/template-files/config/env/examples/ssl.sh rootfs/usr/local/share/template-files/config/env/examples/supabase.sh rootfs/usr/local/share/template-files/config/env/examples/webservers.sh rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
##@Version : 202408270903-git
|
##@Version : 202511301726-git
|
||||||
# @@Author : Jason Hempstead
|
# @@Author : Jason Hempstead
|
||||||
# @@Contact : jason@casjaysdev.pro
|
# @@Contact : jason@casjaysdev.pro
|
||||||
# @@License : WTFPL
|
# @@License : WTFPL
|
||||||
# @@ReadME : entrypoint.sh --help
|
# @@ReadME : entrypoint.sh --help
|
||||||
# @@Copyright : Copyright: (c) 2024 Jason Hempstead, Casjays Developments
|
# @@Copyright : Copyright: (c) 2025 Jason Hempstead, Casjays Developments
|
||||||
# @@Created : Tuesday, Aug 27, 2024 09:03 EDT
|
# @@Created : Sunday, Nov 30, 2025 18:37 EST
|
||||||
# @@File : entrypoint.sh
|
# @@File : entrypoint.sh
|
||||||
# @@Description : Entrypoint file for bind
|
# @@Description : Entrypoint file for bind
|
||||||
# @@Changelog : New script
|
# @@Changelog : New script
|
||||||
@@ -17,32 +17,64 @@
|
|||||||
# @@Terminal App : no
|
# @@Terminal App : no
|
||||||
# @@sudo/root : no
|
# @@sudo/root : no
|
||||||
# @@Template : other/docker-entrypoint
|
# @@Template : other/docker-entrypoint
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
|
||||||
# shellcheck disable=SC2031
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# shellcheck disable=SC2120
|
# run trap command on exit
|
||||||
# shellcheck disable=SC2155
|
trap '__trap_exit_handler' EXIT
|
||||||
# shellcheck disable=SC2199
|
trap '__trap_signal_handler' INT TERM PWR
|
||||||
# shellcheck disable=SC2317
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
__trap_exit_handler() {
|
||||||
|
local retVal=$?
|
||||||
|
if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
exit $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__trap_signal_handler() {
|
||||||
|
local retVal=$?
|
||||||
|
echo "Container received shutdown signal"
|
||||||
|
if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
exit $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
||||||
[ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ] && export DEBUGGER_OPTIONS="$(<"/config/.debug")" || DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
if [ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ]; then
|
||||||
{ [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; } && echo "Enabling debugging" && set -o pipefail -x$DEBUGGER_OPTIONS && export DEBUGGER="on" || set -o pipefail
|
export DEBUGGER_OPTIONS="$(<"/config/.debug")"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
else
|
||||||
|
DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
||||||
|
fi
|
||||||
|
if [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; then
|
||||||
|
echo "Enabling debugging"
|
||||||
|
set -o pipefail -x$DEBUGGER_OPTIONS
|
||||||
|
export DEBUGGER="on"
|
||||||
|
else
|
||||||
|
set -o pipefail
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set bash options
|
# Set bash options
|
||||||
SCRIPT_FILE="$0"
|
SCRIPT_FILE="$0"
|
||||||
CONTAINER_NAME="bind"
|
CONTAINER_NAME="bind"
|
||||||
SCRIPT_NAME="$(basename "$SCRIPT_FILE" 2>/dev/null)"
|
SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)"
|
||||||
CONTAINER_NAME="${ENV_CONTAINER_NAME:-$CONTAINER_NAME}"
|
CONTAINER_NAME="${ENV_CONTAINER_NAME:-$CONTAINER_NAME}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# remove whitespaces from beginning argument
|
# remove whitespaces from beginning argument
|
||||||
while :; do [ "$1" = " " ] && shift 1 || break; done
|
while :; do
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if [ "$1" = " " ]; then
|
||||||
|
shift 1
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
[ "$1" = "$SCRIPT_FILE" ] && shift 1
|
[ "$1" = "$SCRIPT_FILE" ] && shift 1
|
||||||
[ "$1" = "$SCRIPT_NAME" ] && shift 1
|
[ "$1" = "$SCRIPT_NAME" ] && shift 1
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# import the functions file
|
# import the functions file
|
||||||
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
||||||
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
||||||
@@ -50,13 +82,13 @@ else
|
|||||||
echo "Can not load functions from /usr/local/etc/docker/functions/entrypoint.sh"
|
echo "Can not load functions from /usr/local/etc/docker/functions/entrypoint.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
case "$1" in
|
case "$1" in
|
||||||
# Help message
|
# Help message
|
||||||
-h | --help)
|
-h | --help)
|
||||||
shift 1
|
shift 1
|
||||||
echo 'Docker container for '$CONTAINER_NAME''
|
echo 'Docker container for '$CONTAINER_NAME''
|
||||||
echo "Usage: $CONTAINER_NAME [cron exec start init shell certbot ssl procs ports healthcheck backup command]"
|
echo "Usage: $CONTAINER_NAME [help tail cron exec start init shell certbot ssl procs ports healthcheck backup command]"
|
||||||
echo ""
|
echo ""
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
@@ -64,79 +96,100 @@ case "$1" in
|
|||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Create the default env files
|
# Create the default env files
|
||||||
__create_env_file "/config/env/default.sh" "/root/env.sh" &>/dev/null
|
__create_env_file "/config/env/default.sh" "/root/env.sh" &>/dev/null
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# import variables from files
|
# import variables from files
|
||||||
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
||||||
[ -f "$set_env" ] && . "$set_env"
|
[ -f "$set_env" ] && . "$set_env"
|
||||||
done
|
done
|
||||||
unset set_env
|
unset set_env
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# User to use to launch service - IE: postgres
|
# User to use to launch service - IE: postgres
|
||||||
RUNAS_USER="root" # normally root
|
# normally root
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
RUNAS_USER="root"
|
||||||
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
SERVICE_USER="named" # execute command as another user
|
# Set user and group from env
|
||||||
SERVICE_GROUP="named" # Set the service group
|
SERVICE_USER="${PUID:-$SERVICE_USER}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
SERVICE_GROUP="${PGID:-$SERVICE_GROUP}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set user and group ID
|
# Set user and group ID
|
||||||
SERVICE_UID="0" # set the user id
|
# set the user id
|
||||||
SERVICE_GID="0" # set the group id
|
SERVICE_UID="${SERVICE_UID:-0}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# set the group id
|
||||||
# Primary server port- will be added to server ports
|
SERVICE_GID="${SERVICE_GID:-0}"
|
||||||
WEB_SERVER_PORT="" # port : 80,443
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
||||||
|
#SERVICE_USER="${SERVICE_USER:-bind}" # execute command as another user
|
||||||
|
#SERVICE_GROUP="${SERVICE_GROUP:-bind}" # Set the service group
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Secondary ports
|
# Secondary ports
|
||||||
SERVER_PORTS="" # specifiy other ports
|
# specifiy other ports
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
SERVER_PORTS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Primary server port- will be added to server ports
|
||||||
|
# port : 80,443
|
||||||
|
WEB_SERVER_PORT=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Healthcheck variables
|
# Healthcheck variables
|
||||||
HEALTH_ENABLED="yes" # enable healthcheck [yes/no]
|
# enable healthcheck [yes/no]
|
||||||
SERVICES_LIST="tini,named,nginx,php-fpm" # comma seperated list of processes for the healthcheck
|
HEALTH_ENABLED="yes"
|
||||||
HEALTH_ENDPOINTS="" # url endpoints: [http://localhost/health,http://localhost/test]
|
# comma separated list of processes for the healthcheck
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
SERVICES_LIST="tini"
|
||||||
|
# url endpoints: [http://localhost/health,http://localhost/test]
|
||||||
|
HEALTH_ENDPOINTS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Update path var
|
# Update path var
|
||||||
export PATH RUNAS_USER SERVICE_USER SERVICE_GROUP SERVICE_UID SERVICE_GID WWW_ROOT_DIR DATABASE_DIR
|
export PATH RUNAS_USER SERVICE_USER SERVICE_GROUP SERVICE_UID SERVICE_GID WWW_ROOT_DIR DATABASE_DIR
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Custom variables
|
# Custom variables
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# show message
|
# show message
|
||||||
__run_message() {
|
__run_message() {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
################## END OF CONFIGURATION #####################
|
################## END OF CONFIGURATION #####################
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# Lets get containers ip address
|
||||||
|
IP4_ADDRESS="$(__get_ip4)"
|
||||||
|
IP6_ADDRESS="$(__get_ip6)"
|
||||||
|
CONTAINER_IP4_ADDRESS="${CONTAINER_IP4_ADDRESS:-$IP4_ADDRESS}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Startup variables
|
# Startup variables
|
||||||
export INIT_DATE="${INIT_DATE:-$(date)}"
|
export INIT_DATE="${INIT_DATE:-$(date)}"
|
||||||
export CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
export CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
||||||
export START_SERVICES="${START_SERVICES:-yes}"
|
export START_SERVICES="${START_SERVICES:-no}"
|
||||||
export ENTRYPOINT_MESSAGE="${ENTRYPOINT_MESSAGE:-yes}"
|
export ENTRYPOINT_MESSAGE="${ENTRYPOINT_MESSAGE:-yes}"
|
||||||
export ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
export ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
||||||
export DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-no}"
|
export DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-no}"
|
||||||
export CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-no}"
|
export CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-no}"
|
||||||
export CONTAINER_NAME="${ENV_CONTAINER_NAME:-$CONTAINER_NAME}"
|
export CONTAINER_NAME="${ENV_CONTAINER_NAME:-$CONTAINER_NAME}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# System
|
# System
|
||||||
export LANG="${LANG:-C.UTF-8}"
|
export LANG="${LANG:-C.UTF-8}"
|
||||||
export LC_ALL="${LANG:-C.UTF-8}"
|
export LC_ALL="${LANG:-C.UTF-8}"
|
||||||
export TZ="${TZ:-${TIMEZONE:-America/New_York}}"
|
export TZ="${TZ:-${TIMEZONE:-America/New_York}}"
|
||||||
export HOSTNAME="${FULL_DOMAIN_NAME:-${SERVER_HOSTNAME:-$HOSTNAME}}"
|
export HOSTNAME="$(hostname -s)"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
export DOMAINNAME="$(hostname -d)"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Default directories
|
# Default directories
|
||||||
export SSL_DIR="${SSL_DIR:-/config/ssl}"
|
export SSL_DIR="${SSL_DIR:-/config/ssl}"
|
||||||
export SSL_CA="${SSL_CERT:-/config/ssl/ca.crt}"
|
export SSL_CA="${SSL_CERT:-/config/ssl/ca.crt}"
|
||||||
export SSL_KEY="${SSL_KEY:-/config/ssl/localhost.pem}"
|
export SSL_KEY="${SSL_KEY:-/config/ssl/localhost.pem}"
|
||||||
export SSL_CERT="${SSL_CERT:-/config/ssl/localhost.crt}"
|
export SSL_CERT="${SSL_CERT:-/config/ssl/localhost.crt}"
|
||||||
export BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
|
|
||||||
export LOCAL_BIN_DIR="${LOCAL_BIN_DIR:-/usr/local/bin}"
|
export LOCAL_BIN_DIR="${LOCAL_BIN_DIR:-/usr/local/bin}"
|
||||||
export DEFAULT_DATA_DIR="${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}"
|
export DEFAULT_DATA_DIR="${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}"
|
||||||
export DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
|
export DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
|
||||||
export DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
|
export DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Backup settings
|
||||||
|
export BACKUP_MAX_DAYS="${BACKUP_MAX_DAYS:-}"
|
||||||
|
export BACKUP_RUN_CRON="${BACKUP_RUN_CRON:-}"
|
||||||
|
export BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Additional
|
# Additional
|
||||||
export PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
export PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
||||||
export PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
export PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
||||||
@@ -149,238 +202,337 @@ export ENTRYPOINT_PID_FILE="${ENTRYPOINT_PID_FILE:-$ENTRYPOINT_PID_FILE}"
|
|||||||
export ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
export ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
||||||
export ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
export ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
||||||
export ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
export ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -n "$CONTAINER_WEB_SERVER_WWW_REPO" ]; then
|
||||||
|
www_temp_dir="/tmp/git/$(basename -- "$CONTAINER_WEB_SERVER_WWW_REPO")"
|
||||||
|
rm -Rf "${WWW_ROOT_DIR:?}"/* "${www_temp_dir:?}"/* 2>/dev/null || true
|
||||||
|
mkdir -p "$WWW_ROOT_DIR" "$www_temp_dir" 2>/dev/null || true
|
||||||
|
git clone -q "$CONTAINER_WEB_SERVER_WWW_REPO" "$www_temp_dir" 2>/dev/null || true
|
||||||
|
rm -Rf "$www_temp_dir/.git" "$www_temp_dir"/.git* 2>/dev/null || true
|
||||||
|
rsync -ra "$www_temp_dir/" "$WWW_ROOT_DIR" --delete 2>/dev/null || true
|
||||||
|
rm -Rf "$www_temp_dir" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# variables based on env/files
|
# variables based on env/files
|
||||||
[ -f "/config/enable/ssl" ] && SSL_ENABLED="yes"
|
if [ -f "/config/enable/ssl" ]; then SSL_ENABLED="yes"; fi
|
||||||
[ -f "/config/enable/ssh" ] && SSH_ENABLED="yes"
|
if [ -f "/config/enable/ssh" ]; then SSH_ENABLED="yes"; fi
|
||||||
[ "$WEB_SERVER_PORT" = "443" ] && SSL_ENABLED="yes"
|
if [ "$WEB_SERVER_PORT" = "443" ]; then SSL_ENABLED="yes"; fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if [ "$CONTAINER_WEB_SERVER_PROTOCOL" = "https" ]; then SSL_ENABLED="yes"; fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# export variables
|
# export variables
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# is already Initialized
|
# is already Initialized
|
||||||
[ -f "$ENTRYPOINT_DATA_INIT_FILE" ] && DATA_DIR_INITIALIZED="yes" || DATA_DIR_INITIALIZED="no"
|
if [ -f "$ENTRYPOINT_DATA_INIT_FILE" ]; then
|
||||||
[ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ] && CONFIG_DIR_INITIALIZED="yes" || CONFIG_DIR_INITIALIZED="no"
|
DATA_DIR_INITIALIZED="yes"
|
||||||
{ [ -f "$ENTRYPOINT_PID_FILE" ] || [ -f "$ENTRYPOINT_INIT_FILE" ]; } && ENTRYPOINT_FIRST_RUN="no" || ENTRYPOINT_FIRST_RUN="yes"
|
else
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
DATA_DIR_INITIALIZED="no"
|
||||||
|
fi
|
||||||
|
if [ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ]; then
|
||||||
|
CONFIG_DIR_INITIALIZED="yes"
|
||||||
|
else
|
||||||
|
CONFIG_DIR_INITIALIZED="no"
|
||||||
|
fi
|
||||||
|
if [ -f "$ENTRYPOINT_PID_FILE" ] || [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
||||||
|
ENTRYPOINT_FIRST_RUN="no"
|
||||||
|
else
|
||||||
|
ENTRYPOINT_FIRST_RUN="yes"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# clean ENV_PORTS variables
|
# clean ENV_PORTS variables
|
||||||
ENV_PORTS="${ENV_PORTS//,/ }" #
|
ENV_PORTS="${ENV_PORTS//,/ }" #
|
||||||
ENV_PORTS="${ENV_PORTS//\/*/}" #
|
ENV_PORTS="${ENV_PORTS//\/*/}" #
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# clean SERVER_PORTS variables
|
# clean SERVER_PORTS variables
|
||||||
SERVER_PORTS="${SERVER_PORTS//,/ }" #
|
SERVER_PORTS="${SERVER_PORTS//,/ }" #
|
||||||
SERVER_PORTS="${SERVER_PORTS//\/*/}" #
|
SERVER_PORTS="${SERVER_PORTS//\/*/}" #
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# clean WEB_SERVER_PORTS variables
|
# clean WEB_SERVER_PORTS variables
|
||||||
WEB_SERVER_PORTS="${WEB_SERVER_PORT//\/*/}" #
|
WEB_SERVER_PORTS="${WEB_SERVER_PORT//\/*/}" #
|
||||||
WEB_SERVER_PORTS="${WEB_SERVER_PORTS//\/*/}" #
|
WEB_SERVER_PORTS="${WEB_SERVER_PORTS//\/*/}" #
|
||||||
WEB_SERVER_PORTS="${WEB_SERVER_PORT//,/ } ${ENV_WEB_SERVER_PORTS//,/ }" #
|
WEB_SERVER_PORTS="${WEB_SERVER_PORT//,/ } ${ENV_WEB_SERVER_PORTS//,/ }" #
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# rewrite and merge variables
|
# rewrite and merge variables
|
||||||
ENV_PORTS="$(__format_variables "$ENV_PORTS" || false)"
|
ENV_PORTS="$(__format_variables "$ENV_PORTS" || false)"
|
||||||
WEB_SERVER_PORTS="$(__format_variables "$WEB_SERVER_PORTS" || false)"
|
WEB_SERVER_PORTS="$(__format_variables "$WEB_SERVER_PORTS" || false)"
|
||||||
ENV_PORTS="$(__format_variables "$SERVER_PORTS" "$WEB_SERVER_PORTS" "$ENV_PORTS" "$SERVER_PORTS" || false)"
|
ENV_PORTS="$(__format_variables "$SERVER_PORTS" "$WEB_SERVER_PORTS" "$ENV_PORTS" "$SERVER_PORTS" || false)"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
#
|
# Remove the commas from env
|
||||||
HEALTH_ENDPOINTS="${HEALTH_ENDPOINTS//,/ }"
|
HEALTH_ENDPOINTS="${HEALTH_ENDPOINTS//,/ }"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# create required directories
|
# create required directories
|
||||||
mkdir -p "/run"
|
mkdir -p "/run" 2>/dev/null || true
|
||||||
mkdir -p "/tmp"
|
mkdir -p "/tmp" 2>/dev/null || true
|
||||||
mkdir -p "/root"
|
mkdir -p "/root" 2>/dev/null || true
|
||||||
mkdir -p "/var/run"
|
mkdir -p "/var/run" 2>/dev/null || true
|
||||||
mkdir -p "/var/tmp"
|
mkdir -p "/var/tmp" 2>/dev/null || true
|
||||||
mkdir -p "/run/cron"
|
mkdir -p "/run/cron" 2>/dev/null || true
|
||||||
mkdir -p "/data/logs"
|
mkdir -p "/data/logs" 2>/dev/null || true
|
||||||
mkdir -p "/run/init.d"
|
mkdir -p "/run/init.d" 2>/dev/null || true
|
||||||
mkdir -p "/config/enable"
|
mkdir -p "/config/enable" 2>/dev/null || true
|
||||||
mkdir -p "/config/secure"
|
mkdir -p "/config/secure" 2>/dev/null || true
|
||||||
mkdir -p "/usr/local/etc/docker/exec"
|
mkdir -p "/usr/local/etc/docker/exec" 2>/dev/null || true
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# create required files
|
# create required files
|
||||||
touch "/data/logs/start.log"
|
touch "/data/logs/start.log" 2>/dev/null || true
|
||||||
touch "/data/logs/entrypoint.log"
|
touch "/data/logs/entrypoint.log" 2>/dev/null || true
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# fix permissions
|
# fix permissions
|
||||||
chmod -f 777 "/run"
|
chmod -f 777 "/run" 2>/dev/null || true
|
||||||
chmod -f 777 "/tmp"
|
chmod -f 777 "/tmp" 2>/dev/null || true
|
||||||
chmod -f 700 "/root"
|
chmod -f 700 "/root" 2>/dev/null || true
|
||||||
chmod -f 777 "/var/run"
|
chmod -f 777 "/var/run" 2>/dev/null || true
|
||||||
chmod -f 777 "/var/tmp"
|
chmod -f 777 "/var/tmp" 2>/dev/null || true
|
||||||
chmod -f 777 "/run/cron"
|
chmod -f 777 "/run/cron" 2>/dev/null || true
|
||||||
chmod -f 777 "/data/logs"
|
chmod -f 777 "/data/logs" 2>/dev/null || true
|
||||||
chmod -f 777 "/run/init.d"
|
chmod -f 777 "/run/init.d" 2>/dev/null || true
|
||||||
chmod -f 777 "/config/enable"
|
chmod -f 777 "/config/enable" 2>/dev/null || true
|
||||||
chmod -f 777 "/config/secure"
|
chmod -f 777 "/config/secure" 2>/dev/null || true
|
||||||
chmod -f 777 "/data/logs/entrypoint.log"
|
chmod -f 777 "/data/logs/entrypoint.log" 2>/dev/null || true
|
||||||
chmod -f 777 "/usr/local/etc/docker/exec"
|
chmod -f 777 "/usr/local/etc/docker/exec" 2>/dev/null || true
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# lets ensure everyone can write to std*
|
# lets ensure everyone can write to std*
|
||||||
[ -f "/dev/stdin" ] && chmod -f 777 "/dev/stdin"
|
if [ -f "/dev/stdin" ]; then
|
||||||
[ -f "/dev/stderr" ] && chmod -f 777 "/dev/stderr"
|
chmod -f 777 "/dev/stdin" 2>/dev/null || true
|
||||||
[ -f "/dev/stdout" ] && chmod -f 777 "/dev/stdout"
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if [ -f "/dev/stderr" ]; then
|
||||||
cat <<EOF | tee /etc/profile.d/locales.shadow /etc/profile.d/locales.sh >/dev/null
|
chmod -f 777 "/dev/stderr" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
if [ -f "/dev/stdout" ]; then
|
||||||
|
chmod -f 777 "/dev/stdout" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
cat <<EOF 2>/dev/null | tee /etc/profile.d/locales.shadow /etc/profile.d/locales.sh >/dev/null 2>&1 || true
|
||||||
export LANG="\${LANG:-C.UTF-8}"
|
export LANG="\${LANG:-C.UTF-8}"
|
||||||
export LC_ALL="\${LANG:-C.UTF-8}"
|
export LC_ALL="\${LANG:-C.UTF-8}"
|
||||||
export TZ="\${TZ:-\${TIMEZONE:-America/New_York}}"
|
export TZ="\${TZ:-\${TIMEZONE:-America/New_York}}"
|
||||||
EOF
|
EOF
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Create the backup dir
|
# Create the backup dir
|
||||||
[ -n "$BACKUP_DIR" ] && { [ -d "$BACKUP_DIR" ] || mkdir -p "$BACKUP_DIR"; }
|
if [ -n "$BACKUP_DIR" ]; then
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if [ ! -d "$BACKUP_DIR" ]; then
|
||||||
if [ -f "$ENTRYPOINT_PID_FILE" ]; then
|
mkdir -p "$BACKUP_DIR" 2>/dev/null || true
|
||||||
START_SERVICES="no"
|
fi
|
||||||
touch "$ENTRYPOINT_PID_FILE"
|
|
||||||
else
|
|
||||||
echo "$$" >"$ENTRYPOINT_PID_FILE"
|
|
||||||
fi
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
||||||
ENTRYPOINT_MESSAGE="no" ENTRYPOINT_FIRST_RUN="no"
|
ENTRYPOINT_MESSAGE="no" ENTRYPOINT_FIRST_RUN="no"
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
|
if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
|
||||||
# Show start message
|
|
||||||
if [ "$CONFIG_DIR_INITIALIZED" = "no" ] || [ "$DATA_DIR_INITIALIZED" = "no" ]; then
|
if [ "$CONFIG_DIR_INITIALIZED" = "no" ] || [ "$DATA_DIR_INITIALIZED" = "no" ]; then
|
||||||
[ "$ENTRYPOINT_MESSAGE" = "yes" ] && echo "Executing entrypoint script for bind"
|
if [ "$ENTRYPOINT_MESSAGE" = "yes" ]; then
|
||||||
|
echo "Executing entrypoint script for bind"
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set reusable variables
|
# Set reusable variables
|
||||||
{ { [ -w "/etc" ] && [ ! -e "/etc/hosts" ]; } || [ -w "/etc/hosts" ]; } && UPDATE_FILE_HOSTS="yes"
|
if [ -w "/etc" ] && [ ! -f "/etc/hosts" ]; then
|
||||||
{ { [ -w "/etc" ] && [ ! -e "/etc/timezone" ]; } || [ -w "/etc/timezone" ]; } && UPDATE_FILE_TZ="yes"
|
UPDATE_FILE_HOSTS="yes"
|
||||||
{ { [ -w "/etc" ] && [ ! -e "/etc/resolv.conf" ]; } || [ -w "/etc/resolv.conf" ]; } && UPDATE_FILE_RESOLV="yes"
|
touch "/etc/hosts"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
elif [ -w "/etc/hosts" ]; then
|
||||||
|
UPDATE_FILE_HOSTS="yes"
|
||||||
|
touch "/etc/hosts"
|
||||||
|
fi
|
||||||
|
if [ -w "/etc" ] && [ ! -f "/etc/timezone" ]; then
|
||||||
|
UPDATE_FILE_TZ="yes"
|
||||||
|
touch "/etc/timezone"
|
||||||
|
elif [ -w "/etc/timezone" ]; then
|
||||||
|
UPDATE_FILE_TZ="yes"
|
||||||
|
touch "/etc/timezone"
|
||||||
|
fi
|
||||||
|
if [ -w "/etc" ] && [ ! -f "/etc/resolv.conf" ]; then
|
||||||
|
UPDATE_FILE_RESOLV="yes"
|
||||||
|
touch "/etc/resolv.conf"
|
||||||
|
elif [ -w "/etc/resolv.conf" ]; then
|
||||||
|
UPDATE_FILE_RESOLV="yes"
|
||||||
|
touch "/etc/resolv.conf"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set timezone
|
# Set timezone
|
||||||
[ -n "$TZ" ] && [ "$UPDATE_FILE_TZ" = "yes" ] && echo "$TZ" >"/etc/timezone"
|
if [ -n "$TZ" ] && [ "$UPDATE_FILE_TZ" = "yes" ]; then
|
||||||
[ -f "/usr/share/zoneinfo/$TZ" ] && [ "$UPDATE_FILE_TZ" = "yes" ] && ln -sf "/usr/share/zoneinfo/$TZ" "/etc/localtime"
|
echo "$TZ" >"/etc/timezone" 2>/dev/null || true
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
fi
|
||||||
|
if [ -f "/usr/share/zoneinfo/$TZ" ] && [ "$UPDATE_FILE_TZ" = "yes" ]; then
|
||||||
|
ln -sf "/usr/share/zoneinfo/$TZ" "/etc/localtime" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# if ipv6 add it to /etc/hosts
|
# if ipv6 add it to /etc/hosts
|
||||||
if [ "$UPDATE_FILE_HOSTS" = "yes" ]; then
|
if [ "$UPDATE_FILE_HOSTS" = "yes" ]; then
|
||||||
echo "# known hostname mappings" >"/etc/hosts"
|
echo "# known hostname mappings" >"/etc/hosts" 2>/dev/null || true
|
||||||
if [ -n "$(ip a 2>/dev/null | grep 'inet6.*::' || ifconfig 2>/dev/null | grep 'inet6.*::')" ]; then
|
if [ -n "$(ip a 2>/dev/null | grep 'inet6.*::' || ifconfig 2>/dev/null | grep 'inet6.*::')" ]; then
|
||||||
__printf_space "40" "::1" "localhost" >>"/etc/hosts"
|
__printf_space "40" "::1" "localhost" >>"/etc/hosts" 2>/dev/null || true
|
||||||
__printf_space "40" "127.0.0.1" "localhost" >>"/etc/hosts"
|
__printf_space "40" "127.0.0.1" "localhost" >>"/etc/hosts" 2>/dev/null || true
|
||||||
else
|
else
|
||||||
__printf_space "40" "127.0.0.1" "localhost" >>"/etc/hosts"
|
__printf_space "40" "127.0.0.1" "localhost" >>"/etc/hosts" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# add .home domain
|
# add .internal domain
|
||||||
if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ -n "$HOSTNAME" ]; then
|
if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ -n "$HOSTNAME" ]; then
|
||||||
__grep_test " $HOSTNAME" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "$HOSTNAME" >>"/etc/hosts"
|
if ! __grep_test " $HOSTNAME" "/etc/hosts"; then
|
||||||
__grep_test " ${HOSTNAME%%.*}.home" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.home" >>"/etc/hosts"
|
__printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "$HOSTNAME" >>"/etc/hosts" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if ! __grep_test " ${HOSTNAME%%.*}.internal" "/etc/hosts"; then
|
||||||
|
__printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.internal" >>"/etc/hosts" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# add domainname
|
# add domainname
|
||||||
if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ "$DOMAINNAME" != "home" ] && [ -n "$DOMAINNAME" ] && [ "$HOSTNAME.$DOMAINNAME" != "$DOMAINNAME" ]; then
|
if [ "$UPDATE_FILE_HOSTS" = "yes" ] && [ "$DOMAINNAME" != "internal" ] && [ -n "$DOMAINNAME" ] && [ "$HOSTNAME.$DOMAINNAME" != "$DOMAINNAME" ]; then
|
||||||
__grep_test " ${HOSTNAME%%.*}.$DOMAINNAME" "/etc/hosts" || __printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.$DOMAINNAME" >>"/etc/hosts"
|
if ! __grep_test " ${HOSTNAME%%.*}.$DOMAINNAME" "/etc/hosts"; then
|
||||||
|
__printf_space "40" "${CONTAINER_IP4_ADDRESS:-127.0.0.1}" "${HOSTNAME%%.*}.$DOMAINNAME" >>"/etc/hosts" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set containers hostname
|
# Set containers hostname
|
||||||
[ -n "$HOSTNAME" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ] && echo "$HOSTNAME" >"/etc/hostname"
|
if [ -n "$HOSTNAME" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ]; then
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
echo "$HOSTNAME" >"/etc/hostname" 2>/dev/null || true
|
||||||
# Set containers hostname with domain
|
fi
|
||||||
# [ -n "$DOMAINNAME" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ] && echo "$HOSTNAME.$DOMAINNAME" >"/etc/hostname"
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
if [ -f "/etc/hostname" ]; then
|
if [ -f "/etc/hostname" ]; then
|
||||||
[ -n "$(type -P hostname)" ] && hostname -F "/etc/hostname" &>/dev/null || HOSTNAME="$(<"/etc/hostname")"
|
if [ -n "$(type -P hostname 2>/dev/null)" ]; then
|
||||||
|
hostname -F "/etc/hostname" 2>/dev/null || true
|
||||||
|
else
|
||||||
|
HOSTNAME="$(<"/etc/hostname")" 2>/dev/null || true
|
||||||
|
fi
|
||||||
export HOSTNAME
|
export HOSTNAME
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# import hosts file into container
|
# import hosts file into container
|
||||||
[ -f "/usr/local/etc/hosts" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ] && cat "/usr/local/etc/hosts" | grep -vF "$HOSTNAME" >>"/etc/hosts"
|
if [ -f "/usr/local/etc/hosts" ] && [ "$UPDATE_FILE_HOSTS" = "yes" ]; then
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
cat "/usr/local/etc/hosts" 2>/dev/null | grep -vF "$HOSTNAME" >>"/etc/hosts" 2>/dev/null || true
|
||||||
# import resolv.conf file into container
|
|
||||||
[ "$CUSTOM_DNS" != "yes" ] && [ -f "/usr/local/etc/resolv.conf" ] && [ "$UPDATE_FILE_RESOLV" = "yes" ] && cat "/usr/local/etc/resolv.conf" >"/etc/resolv.conf"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
if [ -d "/usr/local/etc/skel" ]; then
|
|
||||||
cp -Rf "/usr/local/etc/skel/." "$HOME/"
|
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# import resolv.conf file into container
|
||||||
|
if [ "$CUSTOM_DNS" != "yes" ] && [ -f "/usr/local/etc/resolv.conf" ] && [ "$UPDATE_FILE_RESOLV" = "yes" ]; then
|
||||||
|
cat "/usr/local/etc/resolv.conf" >"/etc/resolv.conf" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -n "$HOME" ] && [ -d "/usr/local/etc/skel" ]; then
|
||||||
|
if [ -d "$HOME" ]; then
|
||||||
|
cp -Rf "/usr/local/etc/skel/." "$HOME/" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Delete any .gitkeep files
|
# Delete any .gitkeep files
|
||||||
[ -d "/data" ] && rm -Rf "/data/.gitkeep" "/data"/*/*.gitkeep
|
if [ -d "/data" ]; then
|
||||||
[ -d "/config" ] && rm -Rf "/config/.gitkeep" "/config"/*/*.gitkeep
|
rm -Rf "/data/.gitkeep" "/data"/*/*.gitkeep 2>/dev/null || true
|
||||||
[ -f "/usr/local/bin/.gitkeep" ] && rm -Rf "/usr/local/bin/.gitkeep"
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
if [ -d "/config" ]; then
|
||||||
|
rm -Rf "/config/.gitkeep" "/config"/*/*.gitkeep 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
if [ -f "/usr/local/bin/.gitkeep" ]; then
|
||||||
|
rm -Rf "/usr/local/bin/.gitkeep" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Setup bin directory - /config/bin > /usr/local/bin
|
# Setup bin directory - /config/bin > /usr/local/bin
|
||||||
__initialize_custom_bin_dir
|
__initialize_custom_bin_dir
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Copy default system configs - /usr/local/share/template-files/defaults > /config/
|
# Copy default system configs - /usr/local/share/template-files/defaults > /config/
|
||||||
__initialize_default_templates
|
__initialize_default_templates
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Copy custom config files - /usr/local/share/template-files/config > /config/
|
# Copy custom config files - /usr/local/share/template-files/config > /config/
|
||||||
__initialize_config_dir
|
__initialize_config_dir
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Copy custom data files - /usr/local/share/template-files/data > /data/
|
# Copy custom data files - /usr/local/share/template-files/data > /data/
|
||||||
__initialize_data_dir
|
__initialize_data_dir
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
__initialize_ssl_certs
|
__initialize_ssl_certs
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
if [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
||||||
ENTRYPOINT_FIRST_RUN="no"
|
ENTRYPOINT_FIRST_RUN="no"
|
||||||
elif [ -d "/config" ]; then
|
|
||||||
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_INIT_FILE"
|
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -d "/config" ]; then
|
||||||
|
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_INIT_FILE" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Check if this is a new container
|
# Check if this is a new container
|
||||||
if [ -f "$ENTRYPOINT_DATA_INIT_FILE" ]; then
|
if [ -f "$ENTRYPOINT_DATA_INIT_FILE" ]; then
|
||||||
DATA_DIR_INITIALIZED="yes"
|
DATA_DIR_INITIALIZED="yes"
|
||||||
elif [ -d "/data" ]; then
|
|
||||||
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_DATA_INIT_FILE"
|
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -d "/data" ]; then
|
||||||
|
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_DATA_INIT_FILE" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ]; then
|
if [ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ]; then
|
||||||
CONFIG_DIR_INITIALIZED="yes"
|
CONFIG_DIR_INITIALIZED="yes"
|
||||||
elif [ -d "/config" ]; then
|
|
||||||
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_CONFIG_INIT_FILE"
|
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -d "/config" ]; then
|
||||||
|
echo "Initialized on: $INIT_DATE" >"$ENTRYPOINT_CONFIG_INIT_FILE" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
|
if [ "$ENTRYPOINT_FIRST_RUN" != "no" ]; then
|
||||||
# setup the smtp server
|
# setup the smtp server
|
||||||
__setup_mta
|
__setup_mta
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# if no pid assume container restart
|
# if no pid assume container restart - clean stale files on restart
|
||||||
[ -f "$ENTRYPOINT_PID_FILE" ] && [ -f "/run/__start_init_scripts.pid" ] || START_SERVICES="yes"
|
if [ -f "$ENTRYPOINT_PID_FILE" ]; then
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
START_SERVICES="no"
|
||||||
[ "$ENTRYPOINT_MESSAGE" = "yes" ] && __printf_space "40" "Container ip address is:" "$CONTAINER_IP4_ADDRESS"
|
touch "$ENTRYPOINT_PID_FILE"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
else
|
||||||
|
START_SERVICES=yes
|
||||||
|
# Clean any stale PID files on first run
|
||||||
|
rm -f /run/__start_init_scripts.pid /run/init.d/*.pid /run/*.pid 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ "$ENTRYPOINT_MESSAGE" = "yes" ]; then
|
||||||
|
__printf_space "40" "The containers ip address is:" "$CONTAINER_IP4_ADDRESS"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Show configured listing processes
|
# Show configured listing processes
|
||||||
if [ "$ENTRYPOINT_MESSAGE" = "yes" ] && [ -n "$ENV_PORTS" ]; then
|
if [ "$ENTRYPOINT_MESSAGE" = "yes" ] && [ -n "$ENV_PORTS" ]; then
|
||||||
show_port=""
|
show_port=""
|
||||||
for port in $ENV_PORTS; do [ -n "$port" ] && show_port+="$(printf '%s ' "${port// /}") "; done
|
for port in $ENV_PORTS; do
|
||||||
|
if [ -n "$port" ]; then
|
||||||
|
show_port+="$(printf '%s ' "${port// /}") "
|
||||||
|
fi
|
||||||
|
done
|
||||||
__printf_space "40" "The following ports are open:" "$show_port"
|
__printf_space "40" "The following ports are open:" "$show_port"
|
||||||
unset port show_port
|
unset port show_port
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# execute init script
|
# execute init script
|
||||||
if [ -f "/tmp/init" ]; then sh "/tmp/init"; fi
|
if [ -f "/tmp/init" ]; then sh "/tmp/init"; fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# create user if needed
|
# create user if needed
|
||||||
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Modify user if needed
|
# Modify user if needed
|
||||||
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Show message
|
# Show message
|
||||||
__run_message
|
__run_message
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Just start services
|
# Just start services
|
||||||
START_SERVICES="${START_SERVICES:-SYSTEM_INIT}"
|
START_SERVICES="${START_SERVICES:-SYSTEM_INIT}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Start all services if no pidfile
|
# Determine if we should start services based on command
|
||||||
if [ "$START_SERVICES" = "yes" ] && [ "$1" != "backup" ] && [ "$1" != "healthcheck" ]; then
|
# Only skip service start for the 'init' command
|
||||||
|
SKIP_SERVICE_START="no"
|
||||||
|
[ "$1" = "init" ] && SKIP_SERVICE_START="yes" && CONTAINER_INIT="yes"
|
||||||
|
[ "$2" = "init" ] && SKIP_SERVICE_START="yes" && CONTAINER_INIT="yes"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Start all services if no pidfile and not skipping
|
||||||
|
if [ "$START_SERVICES" = "yes" ] || [ -z "$1" ]; then
|
||||||
|
if [ "$SKIP_SERVICE_START" = "no" ]; then
|
||||||
[ "$1" = "start" ] && shift 1
|
[ "$1" = "start" ] && shift 1
|
||||||
[ "$1" = "all" ] && shift 1
|
[ "$1" = "all" ] && shift 1
|
||||||
[ "$1" = "init" ] && export CONTAINER_INIT="yes"
|
rm -Rf "/run"/*/*pid 2>/dev/null || true
|
||||||
echo "$$" >"$ENTRYPOINT_PID_FILE"
|
echo "$$" >"$ENTRYPOINT_PID_FILE"
|
||||||
__start_init_scripts "/usr/local/etc/docker/init.d"
|
__start_init_scripts "/usr/local/etc/docker/init.d"
|
||||||
START_SERVICES="no"
|
|
||||||
CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
CONTAINER_INIT="${CONTAINER_INIT:-no}"
|
||||||
|
fi
|
||||||
|
START_SERVICES="no"
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
export START_SERVICES CONTAINER_INIT ENTRYPOINT_PID_FILE
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Begin options
|
# Begin options
|
||||||
case "$1" in
|
case "$1" in
|
||||||
init)
|
init)
|
||||||
@@ -388,6 +540,25 @@ init)
|
|||||||
echo "Container has been Initialized"
|
echo "Container has been Initialized"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
tail)
|
||||||
|
shift 1
|
||||||
|
case "$1" in
|
||||||
|
null)
|
||||||
|
shift $#
|
||||||
|
tail -F "/dev/null"
|
||||||
|
;;
|
||||||
|
app)
|
||||||
|
shift $#
|
||||||
|
tail -F /data/logs/*/*.log
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
tail "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tail -F "${@:-/dev/null}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
logs)
|
logs)
|
||||||
shift 1
|
shift 1
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -416,29 +587,33 @@ cron)
|
|||||||
# backup data and config dirs
|
# backup data and config dirs
|
||||||
backup)
|
backup)
|
||||||
shift 1
|
shift 1
|
||||||
save="${1:-$BACKUP_DIR}"
|
__backup $BACKUP_MAX_DAYS $1
|
||||||
backupExit=0
|
exit $?
|
||||||
date="$(date '+%Y%m%d-%H%M')"
|
|
||||||
file="$save/$date.tar.gz"
|
|
||||||
echo "Backing up /data /config to $file"
|
|
||||||
sleep 1
|
|
||||||
tar cfvz "$file" --exclude="$save" "/data" "/config" || false
|
|
||||||
backupExit=$?
|
|
||||||
[ $backupExit -eq 0 ] && echo "Backed up /data /config has finished" || echo "Backup of /data /config has failed"
|
|
||||||
exit $backupExit
|
|
||||||
;;
|
;;
|
||||||
# Docker healthcheck
|
# Docker healthcheck
|
||||||
healthcheck)
|
healthcheck)
|
||||||
shift
|
shift 1
|
||||||
|
case "$1" in
|
||||||
|
init | test)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
arguments="$*"
|
||||||
healthStatus=0
|
healthStatus=0
|
||||||
services="${SERVICES_LIST:-$@}"
|
|
||||||
healthEnabled="${HEALTH_ENABLED:-}"
|
healthEnabled="${HEALTH_ENABLED:-}"
|
||||||
healthPorts="${WEB_SERVER_PORTS:-}"
|
healthPorts="${WEB_SERVER_PORTS:-}"
|
||||||
healthEndPoints="${HEALTH_ENDPOINTS:-}"
|
healthEndPoints="${HEALTH_ENDPOINTS:-}"
|
||||||
|
SERVICES_LIST="${arguments:-$SERVICES_LIST}"
|
||||||
|
services="$(echo "${SERVICES_LIST//,/ }")"
|
||||||
healthMessage="Everything seems to be running"
|
healthMessage="Everything seems to be running"
|
||||||
services="${services//,/ }"
|
|
||||||
{ [ "$1" = "init" ] || [ "$1" = "test" ]; } && exit 0
|
|
||||||
[ "$healthEnabled" = "yes" ] || exit 0
|
[ "$healthEnabled" = "yes" ] || exit 0
|
||||||
|
if [ -d "/run/healthcheck" ] && [ "$(ls -A "/run/healthcheck" | wc -l)" -ne 0 ]; then
|
||||||
|
for service in /run/healthcheck/*; do
|
||||||
|
name=$(basename -- $service)
|
||||||
|
services+="$name "
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
services="$(echo "$services" | tr ' ' '\n' | sort -u | grep -v '^$')"
|
||||||
for proc in $services; do
|
for proc in $services; do
|
||||||
if [ -n "$proc" ]; then
|
if [ -n "$proc" ]; then
|
||||||
if ! __pgrep "$proc"; then
|
if ! __pgrep "$proc"; then
|
||||||
@@ -467,6 +642,8 @@ healthcheck)
|
|||||||
[ -n "$healthMessage" ] && echo "$healthMessage"
|
[ -n "$healthMessage" ] && echo "$healthMessage"
|
||||||
exit $healthStatus
|
exit $healthStatus
|
||||||
;;
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
# show open ports
|
# show open ports
|
||||||
ports)
|
ports)
|
||||||
shift 1
|
shift 1
|
||||||
@@ -520,7 +697,11 @@ start)
|
|||||||
export PATH="/usr/local/etc/docker/init.d:$PATH"
|
export PATH="/usr/local/etc/docker/init.d:$PATH"
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
scripts="$(ls -A "/usr/local/etc/docker/init.d")"
|
scripts="$(ls -A "/usr/local/etc/docker/init.d")"
|
||||||
[ -n "$scripts" ] && echo "$scripts" || echo "No scripts found in: /usr/local/etc/docker/init.d"
|
if [ -n "$scripts" ]; then
|
||||||
|
echo "$scripts"
|
||||||
|
else
|
||||||
|
echo "No scripts found in: /usr/local/etc/docker/init.d"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
elif [ "$1" = "all" ]; then
|
elif [ "$1" = "all" ]; then
|
||||||
shift $#
|
shift $#
|
||||||
@@ -531,7 +712,6 @@ start)
|
|||||||
elif [ -f "/usr/local/etc/docker/init.d/$1" ]; then
|
elif [ -f "/usr/local/etc/docker/init.d/$1" ]; then
|
||||||
eval "/usr/local/etc/docker/init.d/$1" &
|
eval "/usr/local/etc/docker/init.d/$1" &
|
||||||
__no_exit
|
__no_exit
|
||||||
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@@ -540,7 +720,11 @@ start)
|
|||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ ! -f "$ENTRYPOINT_PID_FILE" ]; then
|
if [ ! -f "$ENTRYPOINT_PID_FILE" ]; then
|
||||||
echo "$$" >"$ENTRYPOINT_PID_FILE"
|
echo "$$" >"$ENTRYPOINT_PID_FILE"
|
||||||
[ "$START_SERVICES" = "no" ] && [ "$CONTAINER_INIT" = "yes" ] || __start_init_scripts "/usr/local/etc/docker/init.d"
|
if [ "$START_SERVICES" = "no" ] && [ "$CONTAINER_INIT" = "yes" ]; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
__start_init_scripts "/usr/local/etc/docker/init.d"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
__no_exit
|
__no_exit
|
||||||
else
|
else
|
||||||
@@ -549,8 +733,8 @@ start)
|
|||||||
exit $?
|
exit $?
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# end of entrypoint
|
# end of entrypoint
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
# ex: ts=2 sw=2 et filetype=sh
|
# ex: ts=2 sw=2 et filetype=sh
|
||||||
|
|||||||
@@ -1,17 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=sh
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
[ -n "$_DEBUG" ] && _DEBUG_OPTIONS="-x"
|
|
||||||
[ "$1" = "--debug" ] && _DEBUG_OPTIONS="-x" && shift 1
|
|
||||||
[ "$DEBUGGER" = "on" ] && echo "Enabling debugging" && set -x$DEBUGGER_OPTIONS
|
|
||||||
set -e $_DEBUG_OPTIONS
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
USER_UID="$(id -u)"
|
USER_UID="$(id -u)"
|
||||||
USER_GID="$(id -g)"
|
USER_GID="$(id -g)"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
[ -f "/etc/pkmgr/options.conf" ] && . "/etc/pkmgr/options.conf"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
if [ -x "$(command -v apt 2>/dev/null)" ]; then
|
if [ -x "$(command -v apt 2>/dev/null)" ]; then
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
pkmgr_cmd="apt"
|
pkmgr_cmd="apt"
|
||||||
@@ -19,6 +12,7 @@ if [ -x "$(command -v apt 2>/dev/null)" ]; then
|
|||||||
pkmgr_mkcache_cmd="$pkmgr_cmd update"
|
pkmgr_mkcache_cmd="$pkmgr_cmd update"
|
||||||
pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
|
pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
|
||||||
pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
|
pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
|
||||||
|
pkmgr_install_post="$pkmgr_cmd --fix-broken install"
|
||||||
elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
|
elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
pkmgr_cmd="apt-get"
|
pkmgr_cmd="apt-get"
|
||||||
@@ -26,6 +20,7 @@ elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
|
|||||||
pkmgr_mkcache_cmd="$pkmgr_cmd update"
|
pkmgr_mkcache_cmd="$pkmgr_cmd update"
|
||||||
pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
|
pkmgr_update_cmd="$pkmgr_cmd upgrade -yy"
|
||||||
pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
|
pkmgr_install_cmd="$pkmgr_cmd install -yy $PKMGR_OPTS"
|
||||||
|
pkmgr_install_post="$pkmgr_cmd --fix-broken install"
|
||||||
elif [ -x "$(command -v dnf 2>/dev/null)" ]; then
|
elif [ -x "$(command -v dnf 2>/dev/null)" ]; then
|
||||||
pkmgr_cmd="dnf"
|
pkmgr_cmd="dnf"
|
||||||
pkmgr_clean_cmd="$pkmgr_cmd clean all"
|
pkmgr_clean_cmd="$pkmgr_cmd clean all"
|
||||||
@@ -63,7 +58,7 @@ else
|
|||||||
pkmgr_update_cmd="$pkmgr_cmd"
|
pkmgr_update_cmd="$pkmgr_cmd"
|
||||||
pkmgr_install_cmd="$pkmgr_cmd"
|
pkmgr_install_cmd="$pkmgr_cmd"
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ -f "/config/pkmgr/settings.conf" ]; then
|
if [ -f "/config/pkmgr/settings.conf" ]; then
|
||||||
. "/config/pkmgr/settings.conf"
|
. "/config/pkmgr/settings.conf"
|
||||||
elif [ -f "/etc/pkmgr/settings.conf" ]; then
|
elif [ -f "/etc/pkmgr/settings.conf" ]; then
|
||||||
@@ -78,9 +73,9 @@ pkmgr_install_cmd="$pkmgr_install_cmd"
|
|||||||
pkmgr_mkcache_cmd="$pkmgr_mkcache_cmd"
|
pkmgr_mkcache_cmd="$pkmgr_mkcache_cmd"
|
||||||
EEOF
|
EEOF
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
[ -n "$pkmgr_cmd" ] || { echo "Can not determine the package manager" && exit 1; }
|
[ -n "$pkmgr_cmd" ] || { echo "Can not determine the package manager" && exit 1; }
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
case "$1" in
|
case "$1" in
|
||||||
pip)
|
pip)
|
||||||
shift 1
|
shift 1
|
||||||
@@ -90,13 +85,34 @@ pip)
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
install)
|
install)
|
||||||
shift 1
|
shift 1
|
||||||
$pip_bin -m $pip_opts "$@"
|
pkg_list="$*"
|
||||||
|
for pkg in $pkg_list; do
|
||||||
|
$pip_bin -m pip $pip_opts "$pkg"
|
||||||
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
$pip_bin "$@"
|
for pkg in "$@"; do
|
||||||
|
$pip_bin -m pip "$pkg"
|
||||||
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
exit $?
|
exit
|
||||||
|
;;
|
||||||
|
install)
|
||||||
|
shift 1
|
||||||
|
[ -n "$1" ] || exit 0
|
||||||
|
[ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_install_cmd="sudo $pkmgr_install_cmd"
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
install_list="$(cat "$1")"
|
||||||
|
else
|
||||||
|
install_list="$*"
|
||||||
|
fi
|
||||||
|
for pkg in $install_list;do
|
||||||
|
echo "installing packages command: $pkmgr_install_cmd $pkg"
|
||||||
|
$pkmgr_install_cmd $pkg
|
||||||
|
if [ -n "$pkmgr_install_post" ]; then eval $pkmgr_install_post; fi
|
||||||
|
done
|
||||||
|
exit
|
||||||
;;
|
;;
|
||||||
update | upgrade)
|
update | upgrade)
|
||||||
shift $#
|
shift $#
|
||||||
@@ -114,20 +130,6 @@ clean)
|
|||||||
$pkmgr_clean_cmd
|
$pkmgr_clean_cmd
|
||||||
exit $?
|
exit $?
|
||||||
;;
|
;;
|
||||||
install)
|
|
||||||
shift 1
|
|
||||||
[ -n "$1" ] || exit 0
|
|
||||||
[ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_install_cmd="sudo $pkmgr_install_cmd"
|
|
||||||
if [ -f "$1" ]; then
|
|
||||||
install_list="$(cat "$1")"
|
|
||||||
echo 'installing packages from file with command: '$pkmgr_install_cmd' "$(<"$1")"'
|
|
||||||
else
|
|
||||||
install_list="$*"
|
|
||||||
echo "installing packages command: $pkmgr_install_cmd $install_list"
|
|
||||||
fi
|
|
||||||
$pkmgr_install_cmd $install_list
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
[ -n "$1" ] || exit 0
|
[ -n "$1" ] || exit 0
|
||||||
[ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_cmd="sudo $pkmgr_cmd"
|
[ "$USER_UID" -eq 0 ] || [ "$USER" = "root" ] || pkmgr_cmd="sudo $pkmgr_cmd"
|
||||||
@@ -136,5 +138,5 @@ install)
|
|||||||
exit $?
|
exit $?
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# end
|
# end
|
||||||
|
|||||||
1718
rootfs/usr/local/etc/docker/functions/entrypoint.sh
Normal file
1718
rootfs/usr/local/etc/docker/functions/entrypoint.sh
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
947
rootfs/usr/local/etc/docker/init.d/03-nginx.sh
Executable file
947
rootfs/usr/local/etc/docker/init.d/03-nginx.sh
Executable file
@@ -0,0 +1,947 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
##@Version : 202511301726-git
|
||||||
|
# @@Author : Jason Hempstead
|
||||||
|
# @@Contact : jason@casjaysdev.pro
|
||||||
|
# @@License : LICENSE.md
|
||||||
|
# @@ReadME : 99-nginx.sh --help
|
||||||
|
# @@Copyright : Copyright: (c) 2025 Jason Hempstead, Casjays Developments
|
||||||
|
# @@Created : Sunday, Nov 30, 2025 18:46 EST
|
||||||
|
# @@File : 99-nginx.sh
|
||||||
|
# @@Description :
|
||||||
|
# @@Changelog : New script
|
||||||
|
# @@TODO : Better documentation
|
||||||
|
# @@Other :
|
||||||
|
# @@Resource :
|
||||||
|
# @@Terminal App : no
|
||||||
|
# @@sudo/root : no
|
||||||
|
# @@Template : other/start-service
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
set -e
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# run trap command on exit
|
||||||
|
trap '__trap_err_handler' ERR
|
||||||
|
trap 'retVal=$?;if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ]; then rm -Rf "$SERVICE_PID_FILE"; fi;exit $retVal' SIGINT SIGTERM SIGPWR
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# ERR trap handler - only fail on critical errors
|
||||||
|
__trap_err_handler() {
|
||||||
|
local retVal=$?
|
||||||
|
local line_number=$LINENO
|
||||||
|
local command="$BASH_COMMAND"
|
||||||
|
if [ $retVal -gt 0 ] && [ $retVal -ne 130 ] && [ $retVal -ne 141 ]; then
|
||||||
|
if [[ "$command" =~ (mkdir|touch|chmod|chown|ln|cp|mv|rm|echo|printf|cat|tee|sed|awk|grep) ]]; then
|
||||||
|
echo "⚠️ Non-critical command failed (continuing): $command" >&2
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "❌ Fatal error occurred: Exit code $retVal at line $line_number in command: $command" >&2
|
||||||
|
if [ "$SERVICE_IS_RUNNING" != "yes" ]; then
|
||||||
|
kill -TERM 1 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
SCRIPT_FILE="$0"
|
||||||
|
SERVICE_NAME="nginx"
|
||||||
|
SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Function to exit appropriately based on context
|
||||||
|
__script_exit() {
|
||||||
|
local exit_code="${1:-0}"
|
||||||
|
if [ "${BASH_SOURCE[0]}" != "${0}" ]; then
|
||||||
|
# Script is being sourced - use return
|
||||||
|
return "$exit_code"
|
||||||
|
else
|
||||||
|
# Script is being executed - use exit
|
||||||
|
exit "$exit_code"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Exit if service is disabled
|
||||||
|
if [ -n "$NGINX_APPNAME_ENABLED" ]; then
|
||||||
|
if [ "$NGINX_APPNAME_ENABLED" != "yes" ]; then
|
||||||
|
export SERVICE_DISABLED="$SERVICE_NAME"
|
||||||
|
__script_exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
||||||
|
if [ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ]; then
|
||||||
|
export DEBUGGER_OPTIONS="$(<"/config/.debug")"
|
||||||
|
else
|
||||||
|
DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
||||||
|
fi
|
||||||
|
if [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; then
|
||||||
|
echo "Enabling debugging"
|
||||||
|
set -xo pipefail -x$DEBUGGER_OPTIONS
|
||||||
|
export DEBUGGER="on"
|
||||||
|
else
|
||||||
|
set -o pipefail
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# import the functions file
|
||||||
|
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
||||||
|
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# import variables
|
||||||
|
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
||||||
|
if [ -f "$set_env" ]; then
|
||||||
|
. "$set_env"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# exit if __start_init_scripts function hasn't been Initialized
|
||||||
|
if [ ! -f "/run/__start_init_scripts.pid" ]; then
|
||||||
|
echo "__start_init_scripts function hasn't been Initialized" >&2
|
||||||
|
SERVICE_IS_RUNNING="no"
|
||||||
|
__script_exit 1
|
||||||
|
fi
|
||||||
|
# Clean up any stale PID file for this service on startup
|
||||||
|
if [ -n "$SERVICE_NAME" ] && [ -f "/run/init.d/$SERVICE_NAME.pid" ]; then
|
||||||
|
old_pid=$(cat "/run/init.d/$SERVICE_NAME.pid" 2>/dev/null)
|
||||||
|
if [ -n "$old_pid" ] && ! kill -0 "$old_pid" 2>/dev/null; then
|
||||||
|
echo "🧹 Removing stale PID file for $SERVICE_NAME"
|
||||||
|
rm -f "/run/init.d/$SERVICE_NAME.pid"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom functions
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Script to execute
|
||||||
|
START_SCRIPT="/usr/local/etc/docker/exec/$SERVICE_NAME"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Reset environment before executing service
|
||||||
|
RESET_ENV="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set webroot
|
||||||
|
WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Default predefined variables
|
||||||
|
# set data directory
|
||||||
|
DATA_DIR="/data/nginx"
|
||||||
|
# set config directory
|
||||||
|
CONF_DIR="/config/nginx"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the containers etc directory
|
||||||
|
ETC_DIR="/etc/nginx"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the var dir
|
||||||
|
VAR_DIR=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the temp dir
|
||||||
|
TMP_DIR="/tmp/nginx"
|
||||||
|
# set scripts pid dir
|
||||||
|
RUN_DIR="/run/nginx"
|
||||||
|
# set log directory
|
||||||
|
LOG_DIR="/data/logs/nginx"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set the working dir
|
||||||
|
WORK_DIR=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# port which service is listening on
|
||||||
|
SERVICE_PORT="80"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# User to use to launch service - IE: postgres
|
||||||
|
# normally root
|
||||||
|
RUNAS_USER="root"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
||||||
|
# execute command as another user
|
||||||
|
SERVICE_USER="nginx"
|
||||||
|
# Set the service group
|
||||||
|
SERVICE_GROUP="nginx"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set password length
|
||||||
|
RANDOM_PASS_USER=""
|
||||||
|
RANDOM_PASS_ROOT=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set user and group ID
|
||||||
|
# set the user id
|
||||||
|
SERVICE_UID="0"
|
||||||
|
# set the group id
|
||||||
|
SERVICE_GID="0"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# execute command variables - keep single quotes variables will be expanded later
|
||||||
|
# command to execute
|
||||||
|
EXEC_CMD_BIN='nginx'
|
||||||
|
# command arguments
|
||||||
|
EXEC_CMD_ARGS='-c $ETC_DIR/nginx.conf'
|
||||||
|
# execute script before
|
||||||
|
EXEC_PRE_SCRIPT=''
|
||||||
|
# Set to no if the service is not running otherwise leave blank
|
||||||
|
SERVICE_USES_PID=''
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Is this service a web server
|
||||||
|
IS_WEB_SERVER="yes"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Is this service a database server
|
||||||
|
IS_DATABASE_SERVICE="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Does this service use a database server
|
||||||
|
USES_DATABASE_SERVICE="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set defualt type - [custom,sqlite,redis,postgres,mariadb,mysql,couchdb,mongodb,supabase]
|
||||||
|
DATABASE_SERVICE_TYPE="sqlite"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Show message before execute
|
||||||
|
PRE_EXEC_MESSAGE=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set the wait time to execute __post_execute function - minutes
|
||||||
|
POST_EXECUTE_WAIT_TIME="1"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Update path var
|
||||||
|
PATH="$PATH:."
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Lets get containers ip address
|
||||||
|
IP4_ADDRESS="$(__get_ip4)"
|
||||||
|
IP6_ADDRESS="$(__get_ip6)"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Where to save passwords to
|
||||||
|
# directory to save username/password for root user
|
||||||
|
ROOT_FILE_PREFIX="/config/secure/auth/root"
|
||||||
|
# directory to save username/password for normal user
|
||||||
|
USER_FILE_PREFIX="/config/secure/auth/user"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# root/admin user info password/random]
|
||||||
|
# root user name
|
||||||
|
root_user_name="${NGINX_ROOT_USER_NAME:-}"
|
||||||
|
# root user password
|
||||||
|
root_user_pass="${NGINX_ROOT_PASS_WORD:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Normal user info [password/random]
|
||||||
|
# normal user name
|
||||||
|
user_name="${NGINX_USER_NAME:-}"
|
||||||
|
# normal user password
|
||||||
|
user_pass="${NGINX_USER_PASS_WORD:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Load variables from config
|
||||||
|
# Generated by my dockermgr script
|
||||||
|
if [ -f "/config/env/nginx.script.sh" ]; then
|
||||||
|
. "/config/env/nginx.script.sh"
|
||||||
|
fi
|
||||||
|
# Overwrite the variables
|
||||||
|
if [ -f "/config/env/nginx.sh" ]; then
|
||||||
|
. "/config/env/nginx.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional predefined variables
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional variables
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Specifiy custom directories to be created
|
||||||
|
ADD_APPLICATION_FILES=""
|
||||||
|
ADD_APPLICATION_DIRS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
APPLICATION_FILES="$LOG_DIR/$SERVICE_NAME.log"
|
||||||
|
APPLICATION_DIRS="$RUN_DIR $ETC_DIR $CONF_DIR $LOG_DIR $TMP_DIR"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional config dirs - will be Copied to /etc/$name
|
||||||
|
ADDITIONAL_CONFIG_DIRS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define variables that need to be loaded into the service - escape quotes - var=\"value\",other=\"test\"
|
||||||
|
CMD_ENV=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Overwrite based on file/directory
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Per Application Variables or imports
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom commands to run before copying to /config
|
||||||
|
__run_precopy() {
|
||||||
|
# Define environment
|
||||||
|
local hostname=${HOSTNAME}
|
||||||
|
if [ ! -d "/run/healthcheck" ]; then
|
||||||
|
mkdir -p "/run/healthcheck"
|
||||||
|
fi
|
||||||
|
# Define actions/commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __run_precopy_local | grep -q 'function'; then
|
||||||
|
__run_precopy_local
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom prerun functions - IE setup WWW_ROOT_DIR
|
||||||
|
__execute_prerun() {
|
||||||
|
# Define environment
|
||||||
|
local hostname=${HOSTNAME}
|
||||||
|
# Define actions/commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __execute_prerun_local | grep -q 'function'; then
|
||||||
|
__execute_prerun_local
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Run any pre-execution checks
|
||||||
|
__run_pre_execute_checks() {
|
||||||
|
# Set variables
|
||||||
|
local exitStatus=0
|
||||||
|
# message to show at start
|
||||||
|
local pre_execute_checks_MessageST="Running preexecute check for $SERVICE_NAME"
|
||||||
|
# message to show at completion
|
||||||
|
local pre_execute_checks_MessageEnd="Finished preexecute check for $SERVICE_NAME"
|
||||||
|
__banner "$pre_execute_checks_MessageST"
|
||||||
|
# Put command to execute in parentheses
|
||||||
|
{
|
||||||
|
true
|
||||||
|
}
|
||||||
|
exitStatus=$?
|
||||||
|
__banner "$pre_execute_checks_MessageEnd: Status $exitStatus"
|
||||||
|
|
||||||
|
# show exit message
|
||||||
|
if [ $exitStatus -ne 0 ]; then
|
||||||
|
echo "The pre-execution check has failed" >&2
|
||||||
|
if [ -f "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE"
|
||||||
|
fi
|
||||||
|
__script_exit 1
|
||||||
|
fi
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then
|
||||||
|
__run_pre_execute_checks_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitStatus
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to update config files - IE: change port
|
||||||
|
__update_conf_files() {
|
||||||
|
# default exit code
|
||||||
|
local exitCode=0
|
||||||
|
# set hostname
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# delete files
|
||||||
|
#__rm ""
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# custom commands
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# replace variables
|
||||||
|
# __replace "" "" "$CONF_DIR/nginx.conf"
|
||||||
|
# replace variables recursively
|
||||||
|
# __find_replace "" "" "$CONF_DIR"
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define actions
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __update_conf_files_local | grep -q 'function'; then
|
||||||
|
__update_conf_files_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# function to run before executing
|
||||||
|
__pre_execute() {
|
||||||
|
# default exit code
|
||||||
|
local exitCode=0
|
||||||
|
# set hostname
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# execute if directories is empty
|
||||||
|
# __is_dir_empty "$CONF_DIR" && true
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define actions to run after copying to /config
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# unset unneeded variables
|
||||||
|
unset sysname
|
||||||
|
# Lets wait a few seconds before continuing
|
||||||
|
sleep 2
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __pre_execute_local | grep -q 'function'; then
|
||||||
|
__pre_execute_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# function to run after executing
|
||||||
|
__post_execute() {
|
||||||
|
# init pid var
|
||||||
|
local pid=""
|
||||||
|
# set default exit code
|
||||||
|
local retVal=0
|
||||||
|
# how long to wait before executing
|
||||||
|
local ctime=${POST_EXECUTE_WAIT_TIME:-1}
|
||||||
|
# convert minutes to seconds
|
||||||
|
local waitTime=$((ctime * 60))
|
||||||
|
# message to show at start
|
||||||
|
local postMessageST="Running post commands for $SERVICE_NAME"
|
||||||
|
# message to show at completion
|
||||||
|
local postMessageEnd="Finished post commands for $SERVICE_NAME"
|
||||||
|
# wait
|
||||||
|
sleep $waitTime
|
||||||
|
# execute commands after waiting
|
||||||
|
(
|
||||||
|
# show message
|
||||||
|
__banner "$postMessageST"
|
||||||
|
# commands to execute
|
||||||
|
sleep 5
|
||||||
|
# show exit message
|
||||||
|
__banner "$postMessageEnd: Status $retVal"
|
||||||
|
) 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
||||||
|
pid=$!
|
||||||
|
if ps ax | awk '{print $1}' | grep -v grep | grep -q "$execPid$"; then
|
||||||
|
retVal=0
|
||||||
|
else
|
||||||
|
retVal=10
|
||||||
|
fi
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __post_execute_local | grep -q 'function'; then
|
||||||
|
__post_execute_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to update config files - IE: change port
|
||||||
|
__pre_message() {
|
||||||
|
local exitCode=0
|
||||||
|
if [ -n "$PRE_EXEC_MESSAGE" ]; then
|
||||||
|
eval echo "$PRE_EXEC_MESSAGE"
|
||||||
|
fi
|
||||||
|
# execute commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __pre_message_local | grep -q 'function'; then
|
||||||
|
__pre_message_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to setup ssl support
|
||||||
|
__update_ssl_conf() {
|
||||||
|
local exitCode=0
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# execute commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __update_ssl_conf_local | grep -q 'function'; then
|
||||||
|
__update_ssl_conf_local
|
||||||
|
fi
|
||||||
|
# set exitCode
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__create_service_env() {
|
||||||
|
local exitCode=0
|
||||||
|
if [ ! -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ]; then
|
||||||
|
cat <<EOF | tee -p "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" &>/dev/null
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# root/admin user info [password/random]
|
||||||
|
#ENV_ROOT_USER_NAME="${ENV_ROOT_USER_NAME:-$NGINX_ROOT_USER_NAME}" # root user name
|
||||||
|
#ENV_ROOT_USER_PASS="${ENV_ROOT_USER_NAME:-$NGINX_ROOT_PASS_WORD}" # root user password
|
||||||
|
#root_user_name="${ENV_ROOT_USER_NAME:-$root_user_name}" #
|
||||||
|
#root_user_pass="${ENV_ROOT_USER_PASS:-$root_user_pass}" #
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#Normal user info [password/random]
|
||||||
|
#ENV_USER_NAME="${ENV_USER_NAME:-$NGINX_USER_NAME}" #
|
||||||
|
#ENV_USER_PASS="${ENV_USER_PASS:-$NGINX_USER_PASS_WORD}" #
|
||||||
|
#user_name="${ENV_USER_NAME:-$user_name}" # normal user name
|
||||||
|
#user_pass="${ENV_USER_PASS:-$user_pass}" # normal user password
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ ! -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh" ]; then
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_precopy_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__execute_prerun_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_pre_execute_checks_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__update_conf_files_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__pre_execute_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__post_execute_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__pre_message_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__update_ssl_conf_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
fi
|
||||||
|
if ! __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"; then
|
||||||
|
exitCode=$((exitCode + 1))
|
||||||
|
fi
|
||||||
|
if ! __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"; then
|
||||||
|
exitCode=$((exitCode + 1))
|
||||||
|
fi
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# script to start server
|
||||||
|
__run_start_script() {
|
||||||
|
local runExitCode=0
|
||||||
|
# expand variables
|
||||||
|
local workdir="$(eval echo "${WORK_DIR:-}")"
|
||||||
|
# expand variables
|
||||||
|
local cmd="$(eval echo "${EXEC_CMD_BIN:-}")"
|
||||||
|
# expand variables
|
||||||
|
local args="$(eval echo "${EXEC_CMD_ARGS:-}")"
|
||||||
|
# expand variables
|
||||||
|
local name="$(eval echo "${EXEC_CMD_NAME:-}")"
|
||||||
|
# expand variables
|
||||||
|
local pre="$(eval echo "${EXEC_PRE_SCRIPT:-}")"
|
||||||
|
# expand variables
|
||||||
|
local extra_env="$(eval echo "${CMD_ENV//,/ }")"
|
||||||
|
# expand variables
|
||||||
|
local lc_type="$(eval echo "${LANG:-${LC_ALL:-$LC_CTYPE}}")"
|
||||||
|
# expand variables
|
||||||
|
local home="$(eval echo "${workdir//\/root/\/tmp\/docker}")"
|
||||||
|
# expand variables
|
||||||
|
local path="$(eval echo "$PATH")"
|
||||||
|
# expand variables
|
||||||
|
local message="$(eval echo "")"
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
if [ -f "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh" ]; then
|
||||||
|
. "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh"
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt"
|
||||||
|
retVal=$?
|
||||||
|
echo "Initializing $SCRIPT_NAME has completed"
|
||||||
|
__script_exit $retVal
|
||||||
|
else
|
||||||
|
# ensure the command exists
|
||||||
|
if [ ! -x "$cmd" ]; then
|
||||||
|
echo "$name is not a valid executable"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
# check and exit if already running
|
||||||
|
if __proc_check "$name" || __proc_check "$cmd"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# show message if env exists
|
||||||
|
if [ -n "$cmd" ]; then
|
||||||
|
if [ -n "$SERVICE_USER" ]; then
|
||||||
|
echo "Setting up $cmd to run as $SERVICE_USER"
|
||||||
|
else
|
||||||
|
SERVICE_USER="root"
|
||||||
|
fi
|
||||||
|
if [ -n "$SERVICE_PORT" ]; then
|
||||||
|
echo "$name will be running on port $SERVICE_PORT"
|
||||||
|
else
|
||||||
|
SERVICE_PORT=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$pre" ] && [ -n "$(command -v "$pre" 2>/dev/null)" ]; then
|
||||||
|
export cmd_exec="$pre $cmd $args"
|
||||||
|
message="Starting service: $name $args through $pre"
|
||||||
|
else
|
||||||
|
export cmd_exec="$cmd $args"
|
||||||
|
message="Starting service: $name $args"
|
||||||
|
fi
|
||||||
|
if [ -n "$su_exec" ]; then
|
||||||
|
echo "using $su_exec" | tee -a -p "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
echo "$message" | tee -a -p "/data/logs/init.txt"
|
||||||
|
su_cmd touch "$SERVICE_PID_FILE"
|
||||||
|
if [ "$RESET_ENV" = "yes" ]; then
|
||||||
|
env_command="$(echo "env -i HOME=\"$home\" LC_CTYPE=\"$lc_type\" PATH=\"$path\" HOSTNAME=\"$sysname\" USER=\"${SERVICE_USER:-$RUNAS_USER}\" $extra_env")"
|
||||||
|
execute_command="$(__trim "$su_exec $env_command $cmd_exec")"
|
||||||
|
if [ ! -f "$START_SCRIPT" ]; then
|
||||||
|
cat <<EOF >"$START_SCRIPT"
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
||||||
|
#
|
||||||
|
set -Eeo pipefail
|
||||||
|
# Setting up $cmd to run as ${SERVICE_USER:-root} with env
|
||||||
|
retVal=10
|
||||||
|
cmd="$cmd"
|
||||||
|
args="$args"
|
||||||
|
SERVICE_NAME="$SERVICE_NAME"
|
||||||
|
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
||||||
|
LOG_DIR="$LOG_DIR"
|
||||||
|
execute_command="$execute_command"
|
||||||
|
\$execute_command 2>"/dev/stderr" >>"\$LOG_DIR/\$SERVICE_NAME.log" &
|
||||||
|
execPid=\$!
|
||||||
|
sleep 1
|
||||||
|
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
||||||
|
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
||||||
|
[ "\$retVal" = 0 ] && printf '%s\n' "\$SERVICE_NAME: \$execPid" >"/run/healthcheck/\$SERVICE_NAME" || echo "Failed to start $execute_command" >&2
|
||||||
|
exit \$retVal
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -f "$START_SCRIPT" ]; then
|
||||||
|
execute_command="$(__trim "$su_exec $cmd_exec")"
|
||||||
|
cat <<EOF >"$START_SCRIPT"
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
||||||
|
#
|
||||||
|
set -Eeo pipefail
|
||||||
|
# Setting up $cmd to run as ${SERVICE_USER:-root}
|
||||||
|
retVal=10
|
||||||
|
cmd="$cmd"
|
||||||
|
args="$args"
|
||||||
|
SERVICE_NAME="$SERVICE_NAME"
|
||||||
|
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
||||||
|
LOG_DIR="$LOG_DIR"
|
||||||
|
execute_command="$execute_command"
|
||||||
|
\$execute_command 2>>"/dev/stderr" >>"\$LOG_DIR/\$SERVICE_NAME.log" &
|
||||||
|
execPid=\$!
|
||||||
|
sleep 1
|
||||||
|
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
||||||
|
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
||||||
|
[ "\$retVal" = 0 ] || echo "Failed to start $execute_command" >&2
|
||||||
|
exit \$retVal
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ ! -x "$START_SCRIPT" ]; then
|
||||||
|
chmod 755 -Rf "$START_SCRIPT"
|
||||||
|
fi
|
||||||
|
if [ "$CONTAINER_INIT" != "yes" ]; then
|
||||||
|
eval sh -c "$START_SCRIPT"
|
||||||
|
runExitCode=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return $runExitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# username and password actions
|
||||||
|
__run_secure_function() {
|
||||||
|
local filesperms
|
||||||
|
if [ -n "$user_name" ] || [ -n "$user_pass" ]; then
|
||||||
|
for filesperms in "${USER_FILE_PREFIX}"/*; do
|
||||||
|
if [ -e "$filesperms" ]; then
|
||||||
|
chmod -Rf 600 "$filesperms"
|
||||||
|
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
||||||
|
fi
|
||||||
|
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_name" ] || [ -n "$root_user_pass" ]; then
|
||||||
|
for filesperms in "${ROOT_FILE_PREFIX}"/*; do
|
||||||
|
if [ -e "$filesperms" ]; then
|
||||||
|
chmod -Rf 600 "$filesperms"
|
||||||
|
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
||||||
|
fi
|
||||||
|
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
unset filesperms
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow ENV_ variable - Import env file
|
||||||
|
if __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# default exit code
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
# application specific
|
||||||
|
EXEC_CMD_NAME="$(basename -- "$EXEC_CMD_BIN")"
|
||||||
|
SERVICE_PID_FILE="/run/init.d/$EXEC_CMD_NAME.pid"
|
||||||
|
SERVICE_PID_NUMBER="$(__pgrep "$EXEC_CMD_NAME" 2>/dev/null || echo '')"
|
||||||
|
if type -P "$EXEC_CMD_BIN" &>/dev/null; then
|
||||||
|
EXEC_CMD_BIN="$(type -P "$EXEC_CMD_BIN")"
|
||||||
|
fi
|
||||||
|
if type -P "$EXEC_PRE_SCRIPT" &>/dev/null; then
|
||||||
|
EXEC_PRE_SCRIPT="$(type -P "$EXEC_PRE_SCRIPT")"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Only run check
|
||||||
|
if __check_service "$1"; then
|
||||||
|
SERVICE_IS_RUNNING=yes
|
||||||
|
else
|
||||||
|
SERVICE_IS_RUNNING="no"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# ensure needed directories exists
|
||||||
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$RUN_DIR" ]; then
|
||||||
|
mkdir -p "$RUN_DIR"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create auth directories
|
||||||
|
if [ -n "$USER_FILE_PREFIX" ]; then
|
||||||
|
if [ ! -d "$USER_FILE_PREFIX" ]; then
|
||||||
|
mkdir -p "$USER_FILE_PREFIX"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$ROOT_FILE_PREFIX" ]; then
|
||||||
|
if [ ! -d "$ROOT_FILE_PREFIX" ]; then
|
||||||
|
mkdir -p "$ROOT_FILE_PREFIX"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -z "$RUNAS_USER" ]; then
|
||||||
|
RUNAS_USER="root"
|
||||||
|
fi
|
||||||
|
if [ -z "$SERVICE_USER" ]; then
|
||||||
|
SERVICE_USER="$RUNAS_USER"
|
||||||
|
fi
|
||||||
|
if [ -z "$SERVICE_GROUP" ]; then
|
||||||
|
SERVICE_GROUP="${SERVICE_USER:-$RUNAS_USER}"
|
||||||
|
fi
|
||||||
|
if [ "$IS_WEB_SERVER" = "yes" ]; then
|
||||||
|
RESET_ENV="yes"
|
||||||
|
__is_htdocs_mounted
|
||||||
|
fi
|
||||||
|
if [ "$IS_WEB_SERVER" = "yes" ] && [ -z "$SERVICE_PORT" ]; then
|
||||||
|
SERVICE_PORT="80"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Database env
|
||||||
|
if [ "$IS_DATABASE_SERVICE" = "yes" ] || [ "$USES_DATABASE_SERVICE" = "yes" ]; then
|
||||||
|
RESET_ENV="no"
|
||||||
|
DATABASE_CREATE="${ENV_DATABASE_CREATE:-$DATABASE_CREATE}"
|
||||||
|
DATABASE_USER_NORMAL="${ENV_DATABASE_USER:-${DATABASE_USER_NORMAL:-$user_name}}"
|
||||||
|
DATABASE_PASS_NORMAL="${ENV_DATABASE_PASSWORD:-${DATABASE_PASS_NORMAL:-$user_pass}}"
|
||||||
|
DATABASE_USER_ROOT="${ENV_DATABASE_ROOT_USER:-${DATABASE_USER_ROOT:-$root_user_name}}"
|
||||||
|
DATABASE_PASS_ROOT="${ENV_DATABASE_ROOT_PASSWORD:-${DATABASE_PASS_ROOT:-$root_user_pass}}"
|
||||||
|
if [ -n "$DATABASE_PASS_NORMAL" ]; then
|
||||||
|
if [ ! -f "${USER_FILE_PREFIX}/db_pass_user" ]; then
|
||||||
|
echo "$DATABASE_PASS_NORMAL" >"${USER_FILE_PREFIX}/db_pass_user"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$DATABASE_PASS_ROOT" ]; then
|
||||||
|
if [ ! -f "${ROOT_FILE_PREFIX}/db_pass_root" ]; then
|
||||||
|
echo "$DATABASE_PASS_ROOT" >"${ROOT_FILE_PREFIX}/db_pass_root"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# [DATABASE_DIR_[SQLITE,REDIS,POSTGRES,MARIADB,COUCHDB,MONGODB,SUPABASE]]
|
||||||
|
if [ "$DATABASE_SERVICE_TYPE" = "custom" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_CUSTOM:-/data/db/custom}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_CUSTOM:-/data/db/custom}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_CUSTOM:-/usr/local/share/httpd/admin/databases}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_CUSTOM:-/admin/dbadmin}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "redis" ] || [ "$DATABASE_SERVICE_TYPE" = "redis" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_REDIS:-/usr/local/share/httpd/admin/redis}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_REDIS:-/admin/redis}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "postgres" ] || [ "$DATABASE_SERVICE_TYPE" = "postgres" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_POSTGRES:-/data/db/postgres}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_POSTGRES:-/data/db/postgres}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_POSTGRES:-/usr/local/share/httpd/admin/postgres}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_POSTGRES:-/admin/postgres}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mariadb" ] || [ "$DATABASE_SERVICE_TYPE" = "mariadb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MARIADB:-/data/db/mariadb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MARIADB:-/data/db/mariadb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MARIADB:-/usr/local/share/httpd/admin/mysql}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MARIADB:-/admin/mysql}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mysql" ] || [ "$DATABASE_SERVICE_TYPE" = "mysql" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MYSQL:-/data/db/mysql}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MYSQL:-/data/db/mysql}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MYSQL:-/usr/local/share/httpd/admin/mysql}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MYSQL:-/admin/mysql}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "couchdb" ] || [ "$DATABASE_SERVICE_TYPE" = "couchdb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_COUCHDB:-/data/db/couchdb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_COUCHDB:-/data/db/couchdb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_COUCHDB:-/usr/local/share/httpd/admin/couchdb}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_COUCHDB:-/admin/couchdb}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mongodb" ] || [ "$DATABASE_SERVICE_TYPE" = "mongodb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MONGODB:-/usr/local/share/httpd/admin/mongodb}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MONGODB:-/admin/mongodb}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "supabase" ] || [ "$DATABASE_SERVICE_TYPE" = "supabase" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_SUPABASE:-/usr/local/share/httpd/admin/supabase}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_SUPBASE:-/admin/supabase}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "sqlite" ] || [ "$DATABASE_SERVICE_TYPE" = "sqlite" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_SQLITE:-/data/db/sqlite}/$SERVER_NAME"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_SQLITE:-/data/db/sqlite}/$SERVER_NAME"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_SQLITE:-/usr/local/share/httpd/admin/sqlite}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_SQLITE:-/admin/sqlite}"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$DATABASE_DIR" ]; then
|
||||||
|
mkdir -p "$DATABASE_DIR"
|
||||||
|
fi
|
||||||
|
chmod 777 "$DATABASE_DIR"
|
||||||
|
fi
|
||||||
|
if [ -n "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
if [ ! -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
mkdir -p "${DATABASE_ADMIN_WWW_ROOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow variables via imports - Overwrite existing
|
||||||
|
if [ -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ]; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set password to random if variable is random
|
||||||
|
if [ "$user_pass" = "random" ]; then
|
||||||
|
user_pass="$(__random_password ${RANDOM_PASS_USER:-16})"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ "$root_user_pass" = "random" ]; then
|
||||||
|
root_user_pass="$(__random_password ${RANDOM_PASS_ROOT:-16})"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow setting initial users and passwords via environment and save to file
|
||||||
|
if [ -n "$user_name" ]; then
|
||||||
|
echo "$user_name" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_name"
|
||||||
|
fi
|
||||||
|
if [ -n "$user_pass" ]; then
|
||||||
|
echo "$user_pass" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_name" ]; then
|
||||||
|
echo "$root_user_name" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_pass" ]; then
|
||||||
|
echo "$root_user_pass" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create needed dirs
|
||||||
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$RUN_DIR" ]; then
|
||||||
|
mkdir -p "$RUN_DIR"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow per init script usernames and passwords
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_name"; then
|
||||||
|
user_name="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"; then
|
||||||
|
user_pass="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"; then
|
||||||
|
root_user_name="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"; then
|
||||||
|
root_user_pass="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/db_pass_user"; then
|
||||||
|
DATABASE_PASS_NORMAL="$(<"${USER_FILE_PREFIX}/db_pass_user")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/db_pass_root"; then
|
||||||
|
DATABASE_PASS_ROOT="$(<"${ROOT_FILE_PREFIX}/db_pass_root")"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set hostname for script
|
||||||
|
sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__create_service_env
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Setup /config directories
|
||||||
|
__init_config_etc
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# pre-run function
|
||||||
|
__execute_prerun
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create user if needed
|
||||||
|
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Modify user if needed
|
||||||
|
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Create base directories
|
||||||
|
__setup_directories
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set switch user command
|
||||||
|
__switch_to_user
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Initialize the home/working dir
|
||||||
|
__init_working_dir
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# show init message
|
||||||
|
__pre_message
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
__initialize_db_users
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Initialize ssl
|
||||||
|
__update_ssl_conf
|
||||||
|
__update_ssl_certs
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set permissions in ${USER_FILE_PREFIX} and ${ROOT_FILE_PREFIX}
|
||||||
|
__run_secure_function
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_precopy
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Copy /config to /etc
|
||||||
|
for config_2_etc in $CONF_DIR $ADDITIONAL_CONFIG_DIRS; do
|
||||||
|
__initialize_system_etc "$config_2_etc" 2>/dev/stderr | tee -p -a "/data/logs/init.txt"
|
||||||
|
done
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Replace variables
|
||||||
|
__initialize_replace_variables "$ETC_DIR" "$CONF_DIR" "$ADDITIONAL_CONFIG_DIRS" "$WWW_ROOT_DIR"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
__initialize_database
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Updating config files
|
||||||
|
__update_conf_files
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# run the pre execute commands
|
||||||
|
__pre_execute
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set permissions
|
||||||
|
__fix_permissions "$SERVICE_USER" "$SERVICE_GROUP"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
if ! __run_pre_execute_checks 2>/dev/stderr | tee -a -p "/data/logs/entrypoint.log" "/data/logs/init.txt"; then
|
||||||
|
return 20
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_start_script 2>>/dev/stderr | tee -p -a "/data/logs/entrypoint.log"
|
||||||
|
errorCode=$?
|
||||||
|
if [ -n "$EXEC_CMD_BIN" ]; then
|
||||||
|
if [ "$errorCode" -eq 0 ]; then
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
SERVICE_IS_RUNNING="yes"
|
||||||
|
else
|
||||||
|
SERVICE_EXIT_CODE=$errorCode
|
||||||
|
SERVICE_IS_RUNNING="${SERVICE_IS_RUNNING:-no}"
|
||||||
|
if [ ! -s "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# start the post execute function in background
|
||||||
|
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__script_exit $SERVICE_EXIT_CODE
|
||||||
@@ -1,596 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# shellcheck shell=bash
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
##@Version : 202408270904-git
|
|
||||||
# @@Author : Jason Hempstead
|
|
||||||
# @@Contact : jason@casjaysdev.pro
|
|
||||||
# @@License : WTFPL
|
|
||||||
# @@ReadME : 03-php-fpm.sh --help
|
|
||||||
# @@Copyright : Copyright: (c) 2024 Jason Hempstead, Casjays Developments
|
|
||||||
# @@Created : Tuesday, Aug 27, 2024 09:04 EDT
|
|
||||||
# @@File : 03-php-fpm.sh
|
|
||||||
# @@Description :
|
|
||||||
# @@Changelog : New script
|
|
||||||
# @@TODO : Better documentation
|
|
||||||
# @@Other :
|
|
||||||
# @@Resource :
|
|
||||||
# @@Terminal App : no
|
|
||||||
# @@sudo/root : no
|
|
||||||
# @@Template : other/start-service
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
# shellcheck disable=SC2031
|
|
||||||
# shellcheck disable=SC2120
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
# shellcheck disable=SC2199
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# run trap command on exit
|
|
||||||
trap 'retVal=$?;[ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE";exit $retVal' SIGINT SIGTERM EXIT
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
|
||||||
[ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ] && export DEBUGGER_OPTIONS="$(<"/config/.debug")" || DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
|
||||||
{ [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; } && echo "Enabling debugging" && set -xo pipefail -x$DEBUGGER_OPTIONS && export DEBUGGER="on" || set -o pipefail
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
SCRIPT_FILE="$0"
|
|
||||||
SERVICE_NAME="php-fpm"
|
|
||||||
SCRIPT_NAME="$(basename "$SCRIPT_FILE" 2>/dev/null)"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# exit if __start_init_scripts function hasn't been Initialized
|
|
||||||
if [ ! -f "/run/__start_init_scripts.pid" ]; then
|
|
||||||
echo "__start_init_scripts function hasn't been Initialized" >&2
|
|
||||||
SERVICE_IS_RUNNING="no"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# import the functions file
|
|
||||||
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
|
||||||
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# import variables
|
|
||||||
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
|
||||||
[ -f "$set_env" ] && . "$set_env"
|
|
||||||
done
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom functions
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Script to execute
|
|
||||||
START_SCRIPT="/usr/local/etc/docker/exec/$SERVICE_NAME"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Reset environment before executing service
|
|
||||||
RESET_ENV="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the database root dir - [DATABASE_DIR_SQLITE,DATABASE_DIR_REDIS,DATABASE_DIR_POSTGRES,DATABASE_DIR_MARIADB,DATABASE_DIR_COUCHDB,DATABASE_DIR_MONGODB,DATABASE_DIR_SUPABASE]
|
|
||||||
DATABASE_BASE_DIR="${DATABASE_BASE_DIR:-/data/db}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the database sub directory [sqlite,postgres,mysql,mariadb,redis,couchdb,mongodb,$APPNAME]
|
|
||||||
DATABASE_SUBDIR="php-fpm"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the database directory - set by the above variables
|
|
||||||
DATABASE_DIR="$DATABASE_BASE_DIR/$DATABASE_SUBDIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set webroot
|
|
||||||
WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Default predefined variables
|
|
||||||
DATA_DIR="/data/php" # set data directory
|
|
||||||
CONF_DIR="/config/php" # set config directory
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the containers etc directory
|
|
||||||
ETC_DIR="/etc/php"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the var dir
|
|
||||||
VAR_DIR=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
TMP_DIR="/tmp/php" # set the temp dir
|
|
||||||
RUN_DIR="/run/php" # set scripts pid dir
|
|
||||||
LOG_DIR="/data/logs/php" # set log directory
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the working dir
|
|
||||||
WORK_DIR=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# port which service is listening on
|
|
||||||
SERVICE_PORT="9000"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# User to use to launch service - IE: postgres
|
|
||||||
RUNAS_USER="root" # normally root
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
|
||||||
SERVICE_USER="nginx" # execute command as another user
|
|
||||||
SERVICE_GROUP="nginx" # Set the service group
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set password length
|
|
||||||
RANDOM_PASS_USER=""
|
|
||||||
RANDOM_PASS_ROOT=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set user and group ID
|
|
||||||
SERVICE_UID="0" # set the user id
|
|
||||||
SERVICE_GID="0" # set the group id
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# execute command variables - keep single quotes variables will be expanded later
|
|
||||||
EXEC_CMD_BIN='php-fpm' # command to execute
|
|
||||||
EXEC_CMD_ARGS='--allow-to-run-as-root --fpm-config $ETC_DIR/php-fpm.conf' # command arguments
|
|
||||||
EXEC_PRE_SCRIPT='' # execute script before
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Is this service a web server
|
|
||||||
IS_WEB_SERVER="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Is this service a database server
|
|
||||||
IS_DATABASE_SERVICE="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Does this service use a database server
|
|
||||||
USES_DATABASE_SERVICE="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Show message before execute
|
|
||||||
PRE_EXEC_MESSAGE=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the wait time to execute __post_execute function - minutes
|
|
||||||
POST_EXECUTE_WAIT_TIME="1"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Update path var
|
|
||||||
PATH="$PATH:."
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Where to save passwords to
|
|
||||||
ROOT_FILE_PREFIX="/config/secure/auth/root" # directory to save username/password for root user
|
|
||||||
USER_FILE_PREFIX="/config/secure/auth/user" # directory to save username/password for normal user
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# root/admin user info password/random]
|
|
||||||
root_user_name="${PHP_FPM_ROOT_USER_NAME:-}" # root user name
|
|
||||||
root_user_pass="${PHP_FPM_ROOT_PASS_WORD:-}" # root user password
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Normal user info [password/random]
|
|
||||||
user_name="${PHP_FPM_USER_NAME:-}" # normal user name
|
|
||||||
user_pass="${PHP_FPM_USER_PASS_WORD:-}" # normal user password
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Load variables from config
|
|
||||||
[ -f "/config/env/php-fpm.script.sh" ] && . "/config/env/php-fpm.script.sh" # Generated by my dockermgr script
|
|
||||||
[ -f "/config/env/php-fpm.sh" ] && . "/config/env/php-fpm.sh" # Overwrite the variabes
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional predefined variables
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional variables
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Specifiy custom directories to be created
|
|
||||||
ADD_APPLICATION_FILES=""
|
|
||||||
ADD_APPLICATION_DIRS=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
APPLICATION_FILES="$LOG_DIR/$SERVICE_NAME.log"
|
|
||||||
APPLICATION_DIRS="$RUN_DIR $ETC_DIR $CONF_DIR $LOG_DIR $TMP_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional config dirs - will be Copied to /etc/$name
|
|
||||||
ADDITIONAL_CONFIG_DIRS=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define variables that need to be loaded into the service - escape quotes - var=\"value\",other=\"test\"
|
|
||||||
CMD_ENV=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Overwrite based on file/directory
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Per Application Variables or imports
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom commands to run before copying to /config
|
|
||||||
__run_precopy() {
|
|
||||||
# Define environment
|
|
||||||
local hostname=${HOSTNAME}
|
|
||||||
# Define actions/commands
|
|
||||||
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom prerun functions - IE setup WWW_ROOT_DIR
|
|
||||||
__execute_prerun() {
|
|
||||||
# Define environment
|
|
||||||
local hostname=${HOSTNAME}
|
|
||||||
# Define actions/commands
|
|
||||||
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Run any pre-execution checks
|
|
||||||
__run_pre_execute_checks() {
|
|
||||||
# Set variables
|
|
||||||
local exitStatus=0
|
|
||||||
local pre_execute_checks_MessageST="Running preexecute check for $SERVICE_NAME" # message to show at start
|
|
||||||
local pre_execute_checks_MessageEnd="Finished preexecute check for $SERVICE_NAME" # message to show at completion
|
|
||||||
__banner "$pre_execute_checks_MessageST"
|
|
||||||
# Put command to execute in parentheses
|
|
||||||
{
|
|
||||||
true
|
|
||||||
}
|
|
||||||
exitStatus=$?
|
|
||||||
__banner "$pre_execute_checks_MessageEnd: Status $exitStatus"
|
|
||||||
|
|
||||||
# show exit message
|
|
||||||
if [ $exitStatus -ne 0 ]; then
|
|
||||||
echo "The pre-execution check has failed" >&2
|
|
||||||
[ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
return $exitStatus
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to update config files - IE: change port
|
|
||||||
__update_conf_files() {
|
|
||||||
local exitCode=0 # default exit code
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# delete files
|
|
||||||
#__rm ""
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# custom commands
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# replace variables
|
|
||||||
# __replace "" "" "$CONF_DIR/php-fpm.conf"
|
|
||||||
# replace variables recursively
|
|
||||||
# __find_replace "" "" "$CONF_DIR"
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define actions
|
|
||||||
|
|
||||||
# exit function
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# function to run before executing
|
|
||||||
__pre_execute() {
|
|
||||||
local exitCode=0 # default exit code
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# execute if directories is empty
|
|
||||||
# __is_dir_empty "$CONF_DIR" && true
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define actions to run after copying to /config
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# unset unneeded variables
|
|
||||||
# unset
|
|
||||||
# Lets wait a few seconds before continuing
|
|
||||||
sleep 5
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# function to run after executing
|
|
||||||
__post_execute() {
|
|
||||||
local pid="" # init pid var
|
|
||||||
local retVal=0 # set default exit code
|
|
||||||
local ctime=${POST_EXECUTE_WAIT_TIME:-1} # how long to wait before executing
|
|
||||||
local waitTime=$((ctime * 60)) # convert minutes to seconds
|
|
||||||
local postMessageST="Running post commands for $SERVICE_NAME" # message to show at start
|
|
||||||
local postMessageEnd="Finished post commands for $SERVICE_NAME" # message to show at completion
|
|
||||||
# wait
|
|
||||||
sleep $waitTime
|
|
||||||
# execute commands after waiting
|
|
||||||
(
|
|
||||||
# show message
|
|
||||||
__banner "$postMessageST"
|
|
||||||
# commands to execute
|
|
||||||
true
|
|
||||||
# show exit message
|
|
||||||
__banner "$postMessageEnd: Status $retVal"
|
|
||||||
) 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
|
||||||
pid=$!
|
|
||||||
# set exitCode
|
|
||||||
ps ax | awk '{print $1}' | grep -v grep | grep -q "$execPid$" && retVal=0 || retVal=10
|
|
||||||
return $retVal
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to update config files - IE: change port
|
|
||||||
__pre_message() {
|
|
||||||
local exitCode=0
|
|
||||||
[ -n "$PRE_EXEC_MESSAGE" ] && eval echo "$PRE_EXEC_MESSAGE"
|
|
||||||
# execute commands
|
|
||||||
|
|
||||||
# set exitCode
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to setup ssl support
|
|
||||||
__update_ssl_conf() {
|
|
||||||
local exitCode=0
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# execute commands
|
|
||||||
|
|
||||||
# set exitCode
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__create_service_env() {
|
|
||||||
cat <<EOF | tee -p "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" &>/dev/null
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# root/admin user info [password/random]
|
|
||||||
#ENV_ROOT_USER_NAME="${ENV_ROOT_USER_NAME:-$PHP_FPM_ROOT_USER_NAME}" # root user name
|
|
||||||
#ENV_ROOT_USER_PASS="${ENV_ROOT_USER_NAME:-$PHP_FPM_ROOT_PASS_WORD}" # root user password
|
|
||||||
#root_user_name="${ENV_ROOT_USER_NAME:-$root_user_name}" #
|
|
||||||
#root_user_pass="${ENV_ROOT_USER_PASS:-$root_user_pass}" #
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#Normal user info [password/random]
|
|
||||||
#ENV_USER_NAME="${ENV_USER_NAME:-$PHP_FPM_USER_NAME}" #
|
|
||||||
#ENV_USER_PASS="${ENV_USER_PASS:-$PHP_FPM_USER_PASS_WORD}" #
|
|
||||||
#user_name="${ENV_USER_NAME:-$user_name}" # normal user name
|
|
||||||
#user_pass="${ENV_USER_PASS:-$user_pass}" # normal user password
|
|
||||||
|
|
||||||
EOF
|
|
||||||
__file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" || return 1
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# script to start server
|
|
||||||
__run_start_script() {
|
|
||||||
local runExitCode=0
|
|
||||||
local workdir="$(eval echo "${WORK_DIR:-}")" # expand variables
|
|
||||||
local cmd="$(eval echo "${EXEC_CMD_BIN:-}")" # expand variables
|
|
||||||
local args="$(eval echo "${EXEC_CMD_ARGS:-}")" # expand variables
|
|
||||||
local name="$(eval echo "${EXEC_CMD_NAME:-}")" # expand variables
|
|
||||||
local pre="$(eval echo "${EXEC_PRE_SCRIPT:-}")" # expand variables
|
|
||||||
local extra_env="$(eval echo "${CMD_ENV//,/ }")" # expand variables
|
|
||||||
local lc_type="$(eval echo "${LANG:-${LC_ALL:-$LC_CTYPE}}")" # expand variables
|
|
||||||
local home="$(eval echo "${workdir//\/root/\/tmp\/docker}")" # expand variables
|
|
||||||
local path="$(eval echo "$PATH")" # expand variables
|
|
||||||
local message="$(eval echo "")" # expand variables
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
[ -f "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh" ] && . "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh"
|
|
||||||
#
|
|
||||||
if [ -z "$cmd" ]; then
|
|
||||||
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt"
|
|
||||||
retVal=$?
|
|
||||||
echo "Initializing $SCRIPT_NAME has completed"
|
|
||||||
exit $retVal
|
|
||||||
else
|
|
||||||
# ensure the command exists
|
|
||||||
if [ ! -x "$cmd" ]; then
|
|
||||||
echo "$name is not a valid executable"
|
|
||||||
return 2
|
|
||||||
fi
|
|
||||||
# check and exit if already running
|
|
||||||
if __proc_check "$name" || __proc_check "$cmd"; then
|
|
||||||
echo "$name is already running" >&2
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# show message if env exists
|
|
||||||
if [ -n "$cmd" ]; then
|
|
||||||
[ -n "$SERVICE_USER" ] && echo "Setting up $cmd to run as $SERVICE_USER" || SERVICE_USER="root"
|
|
||||||
[ -n "$SERVICE_PORT" ] && echo "$name will be running on port $SERVICE_PORT" || SERVICE_PORT=""
|
|
||||||
fi
|
|
||||||
if [ -n "$pre" ] && [ -n "$(command -v "$pre" 2>/dev/null)" ]; then
|
|
||||||
export cmd_exec="$pre $cmd $args"
|
|
||||||
message="Starting service: $name $args through $pre"
|
|
||||||
else
|
|
||||||
export cmd_exec="$cmd $args"
|
|
||||||
message="Starting service: $name $args"
|
|
||||||
fi
|
|
||||||
[ -n "$su_exec" ] && echo "using $su_exec" | tee -a -p "/data/logs/init.txt"
|
|
||||||
echo "$message" | tee -a -p "/data/logs/init.txt"
|
|
||||||
su_cmd touch "$SERVICE_PID_FILE"
|
|
||||||
if [ "$RESET_ENV" = "yes" ]; then
|
|
||||||
env_command="$(echo "env -i HOME=\"$home\" LC_CTYPE=\"$lc_type\" PATH=\"$path\" HOSTNAME=\"$sysname\" USER=\"${SERVICE_USER:-$RUNAS_USER}\" $extra_env")"
|
|
||||||
execute_command="$(__trim "$su_exec $env_command $cmd_exec")"
|
|
||||||
if [ ! -f "$START_SCRIPT" ]; then
|
|
||||||
cat <<EOF >"$START_SCRIPT"
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
|
||||||
#
|
|
||||||
set -Eeo pipefail
|
|
||||||
# Setting up $cmd to run as ${SERVICE_USER:-root} with env
|
|
||||||
retVal=10
|
|
||||||
cmd="$cmd"
|
|
||||||
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
|
||||||
$execute_command 2>"/dev/stderr" >>"$LOG_DIR/$SERVICE_NAME.log" &
|
|
||||||
execPid=\$!
|
|
||||||
sleep 10
|
|
||||||
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
|
||||||
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
|
||||||
[ "\$retVal" = 0 ] && echo "\$cmd has been started" || echo "Failed to start $execute_command" >&2
|
|
||||||
exit \$retVal
|
|
||||||
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ ! -f "$START_SCRIPT" ]; then
|
|
||||||
execute_command="$(__trim "$su_exec $cmd_exec")"
|
|
||||||
cat <<EOF >"$START_SCRIPT"
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
|
||||||
#
|
|
||||||
set -Eeo pipefail
|
|
||||||
# Setting up $cmd to run as ${SERVICE_USER:-root}
|
|
||||||
retVal=10
|
|
||||||
cmd="$cmd"
|
|
||||||
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
|
||||||
$execute_command 2>>"/dev/stderr" >>"$LOG_DIR/$SERVICE_NAME.log" &
|
|
||||||
execPid=\$!
|
|
||||||
sleep 10
|
|
||||||
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
|
||||||
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
|
||||||
[ "\$retVal" = 0 ] && echo "\$cmd has been started" || echo "Failed to start $execute_command" >&2 >&2
|
|
||||||
exit \$retVal
|
|
||||||
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
[ -x "$START_SCRIPT" ] || chmod 755 -Rf "$START_SCRIPT"
|
|
||||||
[ "$CONTAINER_INIT" = "yes" ] || eval sh -c "$START_SCRIPT"
|
|
||||||
runExitCode=$?
|
|
||||||
return $runExitCode
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# username and password actions
|
|
||||||
__run_secure_function() {
|
|
||||||
local filesperms
|
|
||||||
if [ -n "$user_name" ] || [ -n "$user_pass" ]; then
|
|
||||||
for filesperms in "${USER_FILE_PREFIX}"/*; do
|
|
||||||
if [ -e "$filesperms" ]; then
|
|
||||||
chmod -Rf 600 "$filesperms"
|
|
||||||
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
|
||||||
fi
|
|
||||||
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
|
||||||
fi
|
|
||||||
if [ -n "$root_user_name" ] || [ -n "$root_user_pass" ]; then
|
|
||||||
for filesperms in "${ROOT_FILE_PREFIX}"/*; do
|
|
||||||
if [ -e "$filesperms" ]; then
|
|
||||||
chmod -Rf 600 "$filesperms"
|
|
||||||
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
|
||||||
fi
|
|
||||||
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
|
||||||
fi
|
|
||||||
unset filesperms
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow ENV_ variable - Import env file
|
|
||||||
__file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" && . "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
SERVICE_EXIT_CODE=0 # default exit code
|
|
||||||
# application specific
|
|
||||||
EXEC_CMD_NAME="$(basename "$EXEC_CMD_BIN")" # set the binary name
|
|
||||||
SERVICE_PID_FILE="/run/init.d/$EXEC_CMD_NAME.pid" # set the pid file location
|
|
||||||
SERVICE_PID_NUMBER="$(__pgrep)" # check if running
|
|
||||||
EXEC_CMD_BIN="$(type -P "$EXEC_CMD_BIN" || echo "$EXEC_CMD_BIN")" # set full path
|
|
||||||
EXEC_PRE_SCRIPT="$(type -P "$EXEC_PRE_SCRIPT" || echo "$EXEC_PRE_SCRIPT")" # set full path
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Only run check
|
|
||||||
__check_service "$1" && SERVICE_IS_RUNNING=yes
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# ensure needed directories exists
|
|
||||||
[ -d "$LOG_DIR" ] || mkdir -p "$LOG_DIR"
|
|
||||||
[ -d "$RUN_DIR" ] || mkdir -p "$RUN_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# create auth directories
|
|
||||||
[ -n "$USER_FILE_PREFIX" ] && { [ -d "$USER_FILE_PREFIX" ] || mkdir -p "$USER_FILE_PREFIX"; }
|
|
||||||
[ -n "$ROOT_FILE_PREFIX" ] && { [ -d "$ROOT_FILE_PREFIX" ] || mkdir -p "$ROOT_FILE_PREFIX"; }
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
[ -n "$RUNAS_USER" ] || RUNAS_USER="root"
|
|
||||||
[ -n "$SERVICE_USER" ] || SERVICE_USER="$RUNAS_USER"
|
|
||||||
[ -n "$SERVICE_GROUP" ] || SERVICE_GROUP="${SERVICE_USER:-$RUNAS_USER}"
|
|
||||||
[ "$IS_WEB_SERVER" = "yes" ] && RESET_ENV="yes" && __is_htdocs_mounted
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Database env
|
|
||||||
if [ "$IS_DATABASE_SERVICE" = "yes" ] || [ "$USES_DATABASE_SERVICE" = "yes" ]; then
|
|
||||||
RESET_ENV="no"
|
|
||||||
DATABASE_CREATE="${ENV_DATABASE_CREATE:-$DATABASE_CREATE}"
|
|
||||||
DATABASE_USER="${ENV_DATABASE_USER:-${DATABASE_USER:-$user_name}}"
|
|
||||||
DATABASE_PASSWORD="${ENV_DATABASE_PASSWORD:-${DATABASE_PASSWORD:-$user_pass}}"
|
|
||||||
DATABASE_ROOT_USER="${ENV_DATABASE_ROOT_USER:-${DATABASE_ROOT_USER:-$root_user_name}}"
|
|
||||||
DATABASE_ROOT_PASSWORD="${ENV_DATABASE_ROOT_PASSWORD:-${DATABASE_ROOT_PASSWORD:-$root_user_pass}}"
|
|
||||||
if [ -n "$DATABASE_PASSWORD" ] && [ ! -f "${USER_FILE_PREFIX}/db_pass_user" ]; then
|
|
||||||
echo "$DATABASE_PASSWORD" >"${USER_FILE_PREFIX}/db_pass_user"
|
|
||||||
fi
|
|
||||||
if [ -n "$DATABASE_ROOT_PASSWORD" ] && [ ! -f "${ROOT_FILE_PREFIX}/db_pass_root" ]; then
|
|
||||||
echo "$DATABASE_ROOT_PASSWORD" >"${ROOT_FILE_PREFIX}/db_pass_root"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow variables via imports - Overwrite existing
|
|
||||||
[ -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ] && . "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set password to random if variable is random
|
|
||||||
[ "$user_pass" = "random" ] && user_pass="$(__random_password ${RANDOM_PASS_USER:-16})"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
[ "$root_user_pass" = "random" ] && root_user_pass="$(__random_password ${RANDOM_PASS_ROOT:-16})"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow setting initial users and passwords via environment and save to file
|
|
||||||
[ -n "$user_name" ] && echo "$user_name" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_name"
|
|
||||||
[ -n "$user_pass" ] && echo "$user_pass" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
|
||||||
[ -n "$root_user_name" ] && echo "$root_user_name" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"
|
|
||||||
[ -n "$root_user_pass" ] && echo "$root_user_pass" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow per init script usernames and passwords
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_name" && user_name="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_pass" && user_pass="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name" && root_user_name="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass" && root_user_pass="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/db_pass_user" && DATABASE_PASSWORD="$(<"${USER_FILE_PREFIX}/db_pass_user")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/db_pass_root" && DATABASE_ROOT_PASSWORD="$(<"${ROOT_FILE_PREFIX}/db_pass_root")"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set hostname for script
|
|
||||||
sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__create_service_env
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Setup /config directories
|
|
||||||
__init_config_etc
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# pre-run function
|
|
||||||
__execute_prerun
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# create user if needed
|
|
||||||
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Modify user if needed
|
|
||||||
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Create base directories
|
|
||||||
__setup_directories
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set switch user command
|
|
||||||
__switch_to_user
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Initialize the home/working dir
|
|
||||||
__init_working_dir
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# show init message
|
|
||||||
__pre_message
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__initialize_db_users
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Initialize ssl
|
|
||||||
__update_ssl_conf
|
|
||||||
__update_ssl_certs
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set permissions in ${USER_FILE_PREFIX} and ${ROOT_FILE_PREFIX}
|
|
||||||
__run_secure_function
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__run_precopy
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Copy /config to /etc
|
|
||||||
for config_2_etc in $CONF_DIR $ADDITIONAL_CONFIG_DIRS; do
|
|
||||||
__initialize_system_etc "$config_2_etc" 2>/dev/stderr | tee -p -a "/data/logs/init.txt"
|
|
||||||
done
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Replace variables
|
|
||||||
__initialize_replace_variables "$ETC_DIR" "$CONF_DIR" "$ADDITIONAL_CONFIG_DIRS" "$WWW_ROOT_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__initialize_database
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Updating config files
|
|
||||||
__update_conf_files
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# run the pre execute commands
|
|
||||||
__pre_execute
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set permissions
|
|
||||||
__fix_permissions "$SERVICE_USER" "$SERVICE_GROUP"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__run_pre_execute_checks 2>/dev/stderr | tee -a -p "/data/logs/entrypoint.log" "/data/logs/init.txt" || return 20
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__run_start_script 2>>/dev/stderr | tee -p -a "/data/logs/entrypoint.log"
|
|
||||||
errorCode=$?
|
|
||||||
if [ -n "$EXEC_CMD_BIN" ]; then
|
|
||||||
if [ "$errorCode" -eq 0 ]; then
|
|
||||||
SERVICE_EXIT_CODE=0
|
|
||||||
SERVICE_IS_RUNNING="yes"
|
|
||||||
else
|
|
||||||
SERVICE_EXIT_CODE=$errorCode
|
|
||||||
SERVICE_IS_RUNNING="${SERVICE_IS_RUNNING:-no}"
|
|
||||||
[ -s "$SERVICE_PID_FILE" ] || rm -Rf "$SERVICE_PID_FILE"
|
|
||||||
fi
|
|
||||||
SERVICE_EXIT_CODE=0
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# start the post execute function in background
|
|
||||||
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
exit $SERVICE_EXIT_CODE
|
|
||||||
947
rootfs/usr/local/etc/docker/init.d/04-php-fpm.sh
Executable file
947
rootfs/usr/local/etc/docker/init.d/04-php-fpm.sh
Executable file
@@ -0,0 +1,947 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
##@Version : 202511301726-git
|
||||||
|
# @@Author : Jason Hempstead
|
||||||
|
# @@Contact : jason@casjaysdev.pro
|
||||||
|
# @@License : LICENSE.md
|
||||||
|
# @@ReadME : 03-php-fpm.sh --help
|
||||||
|
# @@Copyright : Copyright: (c) 2025 Jason Hempstead, Casjays Developments
|
||||||
|
# @@Created : Sunday, Nov 30, 2025 18:46 EST
|
||||||
|
# @@File : 03-php-fpm.sh
|
||||||
|
# @@Description :
|
||||||
|
# @@Changelog : New script
|
||||||
|
# @@TODO : Better documentation
|
||||||
|
# @@Other :
|
||||||
|
# @@Resource :
|
||||||
|
# @@Terminal App : no
|
||||||
|
# @@sudo/root : no
|
||||||
|
# @@Template : other/start-service
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
set -e
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# run trap command on exit
|
||||||
|
trap '__trap_err_handler' ERR
|
||||||
|
trap 'retVal=$?;if [ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ]; then rm -Rf "$SERVICE_PID_FILE"; fi;exit $retVal' SIGINT SIGTERM SIGPWR
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# ERR trap handler - only fail on critical errors
|
||||||
|
__trap_err_handler() {
|
||||||
|
local retVal=$?
|
||||||
|
local line_number=$LINENO
|
||||||
|
local command="$BASH_COMMAND"
|
||||||
|
if [ $retVal -gt 0 ] && [ $retVal -ne 130 ] && [ $retVal -ne 141 ]; then
|
||||||
|
if [[ "$command" =~ (mkdir|touch|chmod|chown|ln|cp|mv|rm|echo|printf|cat|tee|sed|awk|grep) ]]; then
|
||||||
|
echo "⚠️ Non-critical command failed (continuing): $command" >&2
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "❌ Fatal error occurred: Exit code $retVal at line $line_number in command: $command" >&2
|
||||||
|
if [ "$SERVICE_IS_RUNNING" != "yes" ]; then
|
||||||
|
kill -TERM 1 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
SCRIPT_FILE="$0"
|
||||||
|
SERVICE_NAME="php-fpm"
|
||||||
|
SCRIPT_NAME="$(basename -- "$SCRIPT_FILE" 2>/dev/null)"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Function to exit appropriately based on context
|
||||||
|
__script_exit() {
|
||||||
|
local exit_code="${1:-0}"
|
||||||
|
if [ "${BASH_SOURCE[0]}" != "${0}" ]; then
|
||||||
|
# Script is being sourced - use return
|
||||||
|
return "$exit_code"
|
||||||
|
else
|
||||||
|
# Script is being executed - use exit
|
||||||
|
exit "$exit_code"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Exit if service is disabled
|
||||||
|
if [ -n "$PHP_FPM_APPNAME_ENABLED" ]; then
|
||||||
|
if [ "$PHP_FPM_APPNAME_ENABLED" != "yes" ]; then
|
||||||
|
export SERVICE_DISABLED="$SERVICE_NAME"
|
||||||
|
__script_exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
||||||
|
if [ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ]; then
|
||||||
|
export DEBUGGER_OPTIONS="$(<"/config/.debug")"
|
||||||
|
else
|
||||||
|
DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
||||||
|
fi
|
||||||
|
if [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; then
|
||||||
|
echo "Enabling debugging"
|
||||||
|
set -xo pipefail -x$DEBUGGER_OPTIONS
|
||||||
|
export DEBUGGER="on"
|
||||||
|
else
|
||||||
|
set -o pipefail
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# import the functions file
|
||||||
|
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
||||||
|
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# import variables
|
||||||
|
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
||||||
|
if [ -f "$set_env" ]; then
|
||||||
|
. "$set_env"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# exit if __start_init_scripts function hasn't been Initialized
|
||||||
|
if [ ! -f "/run/__start_init_scripts.pid" ]; then
|
||||||
|
echo "__start_init_scripts function hasn't been Initialized" >&2
|
||||||
|
SERVICE_IS_RUNNING="no"
|
||||||
|
__script_exit 1
|
||||||
|
fi
|
||||||
|
# Clean up any stale PID file for this service on startup
|
||||||
|
if [ -n "$SERVICE_NAME" ] && [ -f "/run/init.d/$SERVICE_NAME.pid" ]; then
|
||||||
|
old_pid=$(cat "/run/init.d/$SERVICE_NAME.pid" 2>/dev/null)
|
||||||
|
if [ -n "$old_pid" ] && ! kill -0 "$old_pid" 2>/dev/null; then
|
||||||
|
echo "🧹 Removing stale PID file for $SERVICE_NAME"
|
||||||
|
rm -f "/run/init.d/$SERVICE_NAME.pid"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom functions
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Script to execute
|
||||||
|
START_SCRIPT="/usr/local/etc/docker/exec/$SERVICE_NAME"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Reset environment before executing service
|
||||||
|
RESET_ENV="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set webroot
|
||||||
|
WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Default predefined variables
|
||||||
|
# set data directory
|
||||||
|
DATA_DIR="/data/php"
|
||||||
|
# set config directory
|
||||||
|
CONF_DIR="/config/php"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the containers etc directory
|
||||||
|
ETC_DIR="/etc/php"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the var dir
|
||||||
|
VAR_DIR=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set the temp dir
|
||||||
|
TMP_DIR="/tmp/php"
|
||||||
|
# set scripts pid dir
|
||||||
|
RUN_DIR="/run/php"
|
||||||
|
# set log directory
|
||||||
|
LOG_DIR="/data/logs/php"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set the working dir
|
||||||
|
WORK_DIR=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# port which service is listening on
|
||||||
|
SERVICE_PORT="9000"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# User to use to launch service - IE: postgres
|
||||||
|
# normally root
|
||||||
|
RUNAS_USER="root"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
||||||
|
# execute command as another user
|
||||||
|
SERVICE_USER="nginx"
|
||||||
|
# Set the service group
|
||||||
|
SERVICE_GROUP="nginx"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set password length
|
||||||
|
RANDOM_PASS_USER=""
|
||||||
|
RANDOM_PASS_ROOT=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set user and group ID
|
||||||
|
# set the user id
|
||||||
|
SERVICE_UID="0"
|
||||||
|
# set the group id
|
||||||
|
SERVICE_GID="0"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# execute command variables - keep single quotes variables will be expanded later
|
||||||
|
# command to execute
|
||||||
|
EXEC_CMD_BIN='php-fpm'
|
||||||
|
# command arguments
|
||||||
|
EXEC_CMD_ARGS='--allow-to-run-as-root --fpm-config $ETC_DIR/php-fpm.conf'
|
||||||
|
# execute script before
|
||||||
|
EXEC_PRE_SCRIPT=''
|
||||||
|
# Set to no if the service is not running otherwise leave blank
|
||||||
|
SERVICE_USES_PID=''
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Is this service a web server
|
||||||
|
IS_WEB_SERVER="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Is this service a database server
|
||||||
|
IS_DATABASE_SERVICE="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Does this service use a database server
|
||||||
|
USES_DATABASE_SERVICE="no"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set defualt type - [custom,sqlite,redis,postgres,mariadb,mysql,couchdb,mongodb,supabase]
|
||||||
|
DATABASE_SERVICE_TYPE="sqlite"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Show message before execute
|
||||||
|
PRE_EXEC_MESSAGE=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set the wait time to execute __post_execute function - minutes
|
||||||
|
POST_EXECUTE_WAIT_TIME="1"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Update path var
|
||||||
|
PATH="$PATH:."
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Lets get containers ip address
|
||||||
|
IP4_ADDRESS="$(__get_ip4)"
|
||||||
|
IP6_ADDRESS="$(__get_ip6)"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Where to save passwords to
|
||||||
|
# directory to save username/password for root user
|
||||||
|
ROOT_FILE_PREFIX="/config/secure/auth/root"
|
||||||
|
# directory to save username/password for normal user
|
||||||
|
USER_FILE_PREFIX="/config/secure/auth/user"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# root/admin user info password/random]
|
||||||
|
# root user name
|
||||||
|
root_user_name="${PHP_FPM_ROOT_USER_NAME:-}"
|
||||||
|
# root user password
|
||||||
|
root_user_pass="${PHP_FPM_ROOT_PASS_WORD:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Normal user info [password/random]
|
||||||
|
# normal user name
|
||||||
|
user_name="${PHP_FPM_USER_NAME:-}"
|
||||||
|
# normal user password
|
||||||
|
user_pass="${PHP_FPM_USER_PASS_WORD:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Load variables from config
|
||||||
|
# Generated by my dockermgr script
|
||||||
|
if [ -f "/config/env/php-fpm.script.sh" ]; then
|
||||||
|
. "/config/env/php-fpm.script.sh"
|
||||||
|
fi
|
||||||
|
# Overwrite the variables
|
||||||
|
if [ -f "/config/env/php-fpm.sh" ]; then
|
||||||
|
. "/config/env/php-fpm.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional predefined variables
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional variables
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Specifiy custom directories to be created
|
||||||
|
ADD_APPLICATION_FILES=""
|
||||||
|
ADD_APPLICATION_DIRS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
APPLICATION_FILES="$LOG_DIR/$SERVICE_NAME.log"
|
||||||
|
APPLICATION_DIRS="$RUN_DIR $ETC_DIR $CONF_DIR $LOG_DIR $TMP_DIR"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Additional config dirs - will be Copied to /etc/$name
|
||||||
|
ADDITIONAL_CONFIG_DIRS=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define variables that need to be loaded into the service - escape quotes - var=\"value\",other=\"test\"
|
||||||
|
CMD_ENV=""
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Overwrite based on file/directory
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Per Application Variables or imports
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom commands to run before copying to /config
|
||||||
|
__run_precopy() {
|
||||||
|
# Define environment
|
||||||
|
local hostname=${HOSTNAME}
|
||||||
|
if [ ! -d "/run/healthcheck" ]; then
|
||||||
|
mkdir -p "/run/healthcheck"
|
||||||
|
fi
|
||||||
|
# Define actions/commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __run_precopy_local | grep -q 'function'; then
|
||||||
|
__run_precopy_local
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Custom prerun functions - IE setup WWW_ROOT_DIR
|
||||||
|
__execute_prerun() {
|
||||||
|
# Define environment
|
||||||
|
local hostname=${HOSTNAME}
|
||||||
|
# Define actions/commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __execute_prerun_local | grep -q 'function'; then
|
||||||
|
__execute_prerun_local
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Run any pre-execution checks
|
||||||
|
__run_pre_execute_checks() {
|
||||||
|
# Set variables
|
||||||
|
local exitStatus=0
|
||||||
|
# message to show at start
|
||||||
|
local pre_execute_checks_MessageST="Running preexecute check for $SERVICE_NAME"
|
||||||
|
# message to show at completion
|
||||||
|
local pre_execute_checks_MessageEnd="Finished preexecute check for $SERVICE_NAME"
|
||||||
|
__banner "$pre_execute_checks_MessageST"
|
||||||
|
# Put command to execute in parentheses
|
||||||
|
{
|
||||||
|
true
|
||||||
|
}
|
||||||
|
exitStatus=$?
|
||||||
|
__banner "$pre_execute_checks_MessageEnd: Status $exitStatus"
|
||||||
|
|
||||||
|
# show exit message
|
||||||
|
if [ $exitStatus -ne 0 ]; then
|
||||||
|
echo "The pre-execution check has failed" >&2
|
||||||
|
if [ -f "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE"
|
||||||
|
fi
|
||||||
|
__script_exit 1
|
||||||
|
fi
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __run_pre_execute_checks_local | grep -q 'function'; then
|
||||||
|
__run_pre_execute_checks_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitStatus
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to update config files - IE: change port
|
||||||
|
__update_conf_files() {
|
||||||
|
# default exit code
|
||||||
|
local exitCode=0
|
||||||
|
# set hostname
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# delete files
|
||||||
|
#__rm ""
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# custom commands
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# replace variables
|
||||||
|
# __replace "" "" "$CONF_DIR/php-fpm.conf"
|
||||||
|
# replace variables recursively
|
||||||
|
# __find_replace "" "" "$CONF_DIR"
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define actions
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __update_conf_files_local | grep -q 'function'; then
|
||||||
|
__update_conf_files_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# function to run before executing
|
||||||
|
__pre_execute() {
|
||||||
|
# default exit code
|
||||||
|
local exitCode=0
|
||||||
|
# set hostname
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# execute if directories is empty
|
||||||
|
# __is_dir_empty "$CONF_DIR" && true
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# define actions to run after copying to /config
|
||||||
|
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# unset unneeded variables
|
||||||
|
unset sysname
|
||||||
|
# Lets wait a few seconds before continuing
|
||||||
|
sleep 2
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __pre_execute_local | grep -q 'function'; then
|
||||||
|
__pre_execute_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# function to run after executing
|
||||||
|
__post_execute() {
|
||||||
|
# init pid var
|
||||||
|
local pid=""
|
||||||
|
# set default exit code
|
||||||
|
local retVal=0
|
||||||
|
# how long to wait before executing
|
||||||
|
local ctime=${POST_EXECUTE_WAIT_TIME:-1}
|
||||||
|
# convert minutes to seconds
|
||||||
|
local waitTime=$((ctime * 60))
|
||||||
|
# message to show at start
|
||||||
|
local postMessageST="Running post commands for $SERVICE_NAME"
|
||||||
|
# message to show at completion
|
||||||
|
local postMessageEnd="Finished post commands for $SERVICE_NAME"
|
||||||
|
# wait
|
||||||
|
sleep $waitTime
|
||||||
|
# execute commands after waiting
|
||||||
|
(
|
||||||
|
# show message
|
||||||
|
__banner "$postMessageST"
|
||||||
|
# commands to execute
|
||||||
|
sleep 5
|
||||||
|
# show exit message
|
||||||
|
__banner "$postMessageEnd: Status $retVal"
|
||||||
|
) 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
||||||
|
pid=$!
|
||||||
|
if ps ax | awk '{print $1}' | grep -v grep | grep -q "$execPid$"; then
|
||||||
|
retVal=0
|
||||||
|
else
|
||||||
|
retVal=10
|
||||||
|
fi
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __post_execute_local | grep -q 'function'; then
|
||||||
|
__post_execute_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $retVal
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to update config files - IE: change port
|
||||||
|
__pre_message() {
|
||||||
|
local exitCode=0
|
||||||
|
if [ -n "$PRE_EXEC_MESSAGE" ]; then
|
||||||
|
eval echo "$PRE_EXEC_MESSAGE"
|
||||||
|
fi
|
||||||
|
# execute commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __pre_message_local | grep -q 'function'; then
|
||||||
|
__pre_message_local
|
||||||
|
fi
|
||||||
|
# exit function
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# use this function to setup ssl support
|
||||||
|
__update_ssl_conf() {
|
||||||
|
local exitCode=0
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# execute commands
|
||||||
|
|
||||||
|
# allow custom functions
|
||||||
|
if builtin type -t __update_ssl_conf_local | grep -q 'function'; then
|
||||||
|
__update_ssl_conf_local
|
||||||
|
fi
|
||||||
|
# set exitCode
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__create_service_env() {
|
||||||
|
local exitCode=0
|
||||||
|
if [ ! -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ]; then
|
||||||
|
cat <<EOF | tee -p "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" &>/dev/null
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# root/admin user info [password/random]
|
||||||
|
#ENV_ROOT_USER_NAME="${ENV_ROOT_USER_NAME:-$PHP_FPM_ROOT_USER_NAME}" # root user name
|
||||||
|
#ENV_ROOT_USER_PASS="${ENV_ROOT_USER_NAME:-$PHP_FPM_ROOT_PASS_WORD}" # root user password
|
||||||
|
#root_user_name="${ENV_ROOT_USER_NAME:-$root_user_name}" #
|
||||||
|
#root_user_pass="${ENV_ROOT_USER_PASS:-$root_user_pass}" #
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#Normal user info [password/random]
|
||||||
|
#ENV_USER_NAME="${ENV_USER_NAME:-$PHP_FPM_USER_NAME}" #
|
||||||
|
#ENV_USER_PASS="${ENV_USER_PASS:-$PHP_FPM_USER_PASS_WORD}" #
|
||||||
|
#user_name="${ENV_USER_NAME:-$user_name}" # normal user name
|
||||||
|
#user_pass="${ENV_USER_PASS:-$user_pass}" # normal user password
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ ! -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh" ]; then
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_precopy_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__execute_prerun_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_pre_execute_checks_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__update_conf_files_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__pre_execute_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__post_execute_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__pre_message_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__update_ssl_conf_local() { true; }
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
fi
|
||||||
|
if ! __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"; then
|
||||||
|
exitCode=$((exitCode + 1))
|
||||||
|
fi
|
||||||
|
if ! __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"; then
|
||||||
|
exitCode=$((exitCode + 1))
|
||||||
|
fi
|
||||||
|
return $exitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# script to start server
|
||||||
|
__run_start_script() {
|
||||||
|
local runExitCode=0
|
||||||
|
# expand variables
|
||||||
|
local workdir="$(eval echo "${WORK_DIR:-}")"
|
||||||
|
# expand variables
|
||||||
|
local cmd="$(eval echo "${EXEC_CMD_BIN:-}")"
|
||||||
|
# expand variables
|
||||||
|
local args="$(eval echo "${EXEC_CMD_ARGS:-}")"
|
||||||
|
# expand variables
|
||||||
|
local name="$(eval echo "${EXEC_CMD_NAME:-}")"
|
||||||
|
# expand variables
|
||||||
|
local pre="$(eval echo "${EXEC_PRE_SCRIPT:-}")"
|
||||||
|
# expand variables
|
||||||
|
local extra_env="$(eval echo "${CMD_ENV//,/ }")"
|
||||||
|
# expand variables
|
||||||
|
local lc_type="$(eval echo "${LANG:-${LC_ALL:-$LC_CTYPE}}")"
|
||||||
|
# expand variables
|
||||||
|
local home="$(eval echo "${workdir//\/root/\/tmp\/docker}")"
|
||||||
|
# expand variables
|
||||||
|
local path="$(eval echo "$PATH")"
|
||||||
|
# expand variables
|
||||||
|
local message="$(eval echo "")"
|
||||||
|
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
if [ -f "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh" ]; then
|
||||||
|
. "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh"
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt"
|
||||||
|
retVal=$?
|
||||||
|
echo "Initializing $SCRIPT_NAME has completed"
|
||||||
|
__script_exit $retVal
|
||||||
|
else
|
||||||
|
# ensure the command exists
|
||||||
|
if [ ! -x "$cmd" ]; then
|
||||||
|
echo "$name is not a valid executable"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
# check and exit if already running
|
||||||
|
if __proc_check "$name" || __proc_check "$cmd"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# show message if env exists
|
||||||
|
if [ -n "$cmd" ]; then
|
||||||
|
if [ -n "$SERVICE_USER" ]; then
|
||||||
|
echo "Setting up $cmd to run as $SERVICE_USER"
|
||||||
|
else
|
||||||
|
SERVICE_USER="root"
|
||||||
|
fi
|
||||||
|
if [ -n "$SERVICE_PORT" ]; then
|
||||||
|
echo "$name will be running on port $SERVICE_PORT"
|
||||||
|
else
|
||||||
|
SERVICE_PORT=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$pre" ] && [ -n "$(command -v "$pre" 2>/dev/null)" ]; then
|
||||||
|
export cmd_exec="$pre $cmd $args"
|
||||||
|
message="Starting service: $name $args through $pre"
|
||||||
|
else
|
||||||
|
export cmd_exec="$cmd $args"
|
||||||
|
message="Starting service: $name $args"
|
||||||
|
fi
|
||||||
|
if [ -n "$su_exec" ]; then
|
||||||
|
echo "using $su_exec" | tee -a -p "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
echo "$message" | tee -a -p "/data/logs/init.txt"
|
||||||
|
su_cmd touch "$SERVICE_PID_FILE"
|
||||||
|
if [ "$RESET_ENV" = "yes" ]; then
|
||||||
|
env_command="$(echo "env -i HOME=\"$home\" LC_CTYPE=\"$lc_type\" PATH=\"$path\" HOSTNAME=\"$sysname\" USER=\"${SERVICE_USER:-$RUNAS_USER}\" $extra_env")"
|
||||||
|
execute_command="$(__trim "$su_exec $env_command $cmd_exec")"
|
||||||
|
if [ ! -f "$START_SCRIPT" ]; then
|
||||||
|
cat <<EOF >"$START_SCRIPT"
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
||||||
|
#
|
||||||
|
set -Eeo pipefail
|
||||||
|
# Setting up $cmd to run as ${SERVICE_USER:-root} with env
|
||||||
|
retVal=10
|
||||||
|
cmd="$cmd"
|
||||||
|
args="$args"
|
||||||
|
SERVICE_NAME="$SERVICE_NAME"
|
||||||
|
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
||||||
|
LOG_DIR="$LOG_DIR"
|
||||||
|
execute_command="$execute_command"
|
||||||
|
\$execute_command 2>"/dev/stderr" >>"\$LOG_DIR/\$SERVICE_NAME.log" &
|
||||||
|
execPid=\$!
|
||||||
|
sleep 1
|
||||||
|
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
||||||
|
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
||||||
|
[ "\$retVal" = 0 ] && printf '%s\n' "\$SERVICE_NAME: \$execPid" >"/run/healthcheck/\$SERVICE_NAME" || echo "Failed to start $execute_command" >&2
|
||||||
|
exit \$retVal
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -f "$START_SCRIPT" ]; then
|
||||||
|
execute_command="$(__trim "$su_exec $cmd_exec")"
|
||||||
|
cat <<EOF >"$START_SCRIPT"
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
||||||
|
#
|
||||||
|
set -Eeo pipefail
|
||||||
|
# Setting up $cmd to run as ${SERVICE_USER:-root}
|
||||||
|
retVal=10
|
||||||
|
cmd="$cmd"
|
||||||
|
args="$args"
|
||||||
|
SERVICE_NAME="$SERVICE_NAME"
|
||||||
|
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
||||||
|
LOG_DIR="$LOG_DIR"
|
||||||
|
execute_command="$execute_command"
|
||||||
|
\$execute_command 2>>"/dev/stderr" >>"\$LOG_DIR/\$SERVICE_NAME.log" &
|
||||||
|
execPid=\$!
|
||||||
|
sleep 1
|
||||||
|
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
||||||
|
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
||||||
|
[ "\$retVal" = 0 ] || echo "Failed to start $execute_command" >&2
|
||||||
|
exit \$retVal
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ ! -x "$START_SCRIPT" ]; then
|
||||||
|
chmod 755 -Rf "$START_SCRIPT"
|
||||||
|
fi
|
||||||
|
if [ "$CONTAINER_INIT" != "yes" ]; then
|
||||||
|
eval sh -c "$START_SCRIPT"
|
||||||
|
runExitCode=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return $runExitCode
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# username and password actions
|
||||||
|
__run_secure_function() {
|
||||||
|
local filesperms
|
||||||
|
if [ -n "$user_name" ] || [ -n "$user_pass" ]; then
|
||||||
|
for filesperms in "${USER_FILE_PREFIX}"/*; do
|
||||||
|
if [ -e "$filesperms" ]; then
|
||||||
|
chmod -Rf 600 "$filesperms"
|
||||||
|
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
||||||
|
fi
|
||||||
|
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_name" ] || [ -n "$root_user_pass" ]; then
|
||||||
|
for filesperms in "${ROOT_FILE_PREFIX}"/*; do
|
||||||
|
if [ -e "$filesperms" ]; then
|
||||||
|
chmod -Rf 600 "$filesperms"
|
||||||
|
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
||||||
|
fi
|
||||||
|
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
||||||
|
fi
|
||||||
|
unset filesperms
|
||||||
|
}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow ENV_ variable - Import env file
|
||||||
|
if __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.local.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# default exit code
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
# application specific
|
||||||
|
EXEC_CMD_NAME="$(basename -- "$EXEC_CMD_BIN")"
|
||||||
|
SERVICE_PID_FILE="/run/init.d/$EXEC_CMD_NAME.pid"
|
||||||
|
SERVICE_PID_NUMBER="$(__pgrep "$EXEC_CMD_NAME" 2>/dev/null || echo '')"
|
||||||
|
if type -P "$EXEC_CMD_BIN" &>/dev/null; then
|
||||||
|
EXEC_CMD_BIN="$(type -P "$EXEC_CMD_BIN")"
|
||||||
|
fi
|
||||||
|
if type -P "$EXEC_PRE_SCRIPT" &>/dev/null; then
|
||||||
|
EXEC_PRE_SCRIPT="$(type -P "$EXEC_PRE_SCRIPT")"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Only run check
|
||||||
|
if __check_service "$1"; then
|
||||||
|
SERVICE_IS_RUNNING=yes
|
||||||
|
else
|
||||||
|
SERVICE_IS_RUNNING="no"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# ensure needed directories exists
|
||||||
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$RUN_DIR" ]; then
|
||||||
|
mkdir -p "$RUN_DIR"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create auth directories
|
||||||
|
if [ -n "$USER_FILE_PREFIX" ]; then
|
||||||
|
if [ ! -d "$USER_FILE_PREFIX" ]; then
|
||||||
|
mkdir -p "$USER_FILE_PREFIX"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$ROOT_FILE_PREFIX" ]; then
|
||||||
|
if [ ! -d "$ROOT_FILE_PREFIX" ]; then
|
||||||
|
mkdir -p "$ROOT_FILE_PREFIX"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ -z "$RUNAS_USER" ]; then
|
||||||
|
RUNAS_USER="root"
|
||||||
|
fi
|
||||||
|
if [ -z "$SERVICE_USER" ]; then
|
||||||
|
SERVICE_USER="$RUNAS_USER"
|
||||||
|
fi
|
||||||
|
if [ -z "$SERVICE_GROUP" ]; then
|
||||||
|
SERVICE_GROUP="${SERVICE_USER:-$RUNAS_USER}"
|
||||||
|
fi
|
||||||
|
if [ "$IS_WEB_SERVER" = "yes" ]; then
|
||||||
|
RESET_ENV="yes"
|
||||||
|
__is_htdocs_mounted
|
||||||
|
fi
|
||||||
|
if [ "$IS_WEB_SERVER" = "yes" ] && [ -z "$SERVICE_PORT" ]; then
|
||||||
|
SERVICE_PORT="80"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Database env
|
||||||
|
if [ "$IS_DATABASE_SERVICE" = "yes" ] || [ "$USES_DATABASE_SERVICE" = "yes" ]; then
|
||||||
|
RESET_ENV="no"
|
||||||
|
DATABASE_CREATE="${ENV_DATABASE_CREATE:-$DATABASE_CREATE}"
|
||||||
|
DATABASE_USER_NORMAL="${ENV_DATABASE_USER:-${DATABASE_USER_NORMAL:-$user_name}}"
|
||||||
|
DATABASE_PASS_NORMAL="${ENV_DATABASE_PASSWORD:-${DATABASE_PASS_NORMAL:-$user_pass}}"
|
||||||
|
DATABASE_USER_ROOT="${ENV_DATABASE_ROOT_USER:-${DATABASE_USER_ROOT:-$root_user_name}}"
|
||||||
|
DATABASE_PASS_ROOT="${ENV_DATABASE_ROOT_PASSWORD:-${DATABASE_PASS_ROOT:-$root_user_pass}}"
|
||||||
|
if [ -n "$DATABASE_PASS_NORMAL" ]; then
|
||||||
|
if [ ! -f "${USER_FILE_PREFIX}/db_pass_user" ]; then
|
||||||
|
echo "$DATABASE_PASS_NORMAL" >"${USER_FILE_PREFIX}/db_pass_user"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$DATABASE_PASS_ROOT" ]; then
|
||||||
|
if [ ! -f "${ROOT_FILE_PREFIX}/db_pass_root" ]; then
|
||||||
|
echo "$DATABASE_PASS_ROOT" >"${ROOT_FILE_PREFIX}/db_pass_root"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# [DATABASE_DIR_[SQLITE,REDIS,POSTGRES,MARIADB,COUCHDB,MONGODB,SUPABASE]]
|
||||||
|
if [ "$DATABASE_SERVICE_TYPE" = "custom" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_CUSTOM:-/data/db/custom}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_CUSTOM:-/data/db/custom}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_CUSTOM:-/usr/local/share/httpd/admin/databases}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_CUSTOM:-/admin/dbadmin}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "redis" ] || [ "$DATABASE_SERVICE_TYPE" = "redis" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_REDIS:-/usr/local/share/httpd/admin/redis}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_REDIS:-/admin/redis}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "postgres" ] || [ "$DATABASE_SERVICE_TYPE" = "postgres" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_POSTGRES:-/data/db/postgres}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_POSTGRES:-/data/db/postgres}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_POSTGRES:-/usr/local/share/httpd/admin/postgres}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_POSTGRES:-/admin/postgres}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mariadb" ] || [ "$DATABASE_SERVICE_TYPE" = "mariadb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MARIADB:-/data/db/mariadb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MARIADB:-/data/db/mariadb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MARIADB:-/usr/local/share/httpd/admin/mysql}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MARIADB:-/admin/mysql}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mysql" ] || [ "$DATABASE_SERVICE_TYPE" = "mysql" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MYSQL:-/data/db/mysql}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MYSQL:-/data/db/mysql}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MYSQL:-/usr/local/share/httpd/admin/mysql}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MYSQL:-/admin/mysql}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "couchdb" ] || [ "$DATABASE_SERVICE_TYPE" = "couchdb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_COUCHDB:-/data/db/couchdb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_COUCHDB:-/data/db/couchdb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_COUCHDB:-/usr/local/share/httpd/admin/couchdb}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_COUCHDB:-/admin/couchdb}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "mongodb" ] || [ "$DATABASE_SERVICE_TYPE" = "mongodb" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_MONGODB:-/usr/local/share/httpd/admin/mongodb}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_MONGODB:-/admin/mongodb}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "supabase" ] || [ "$DATABASE_SERVICE_TYPE" = "supabase" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_SUPABASE:-/usr/local/share/httpd/admin/supabase}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_SUPBASE:-/admin/supabase}"
|
||||||
|
fi
|
||||||
|
elif [ "$SERVICE_NAME" = "sqlite" ] || [ "$DATABASE_SERVICE_TYPE" = "sqlite" ]; then
|
||||||
|
DATABASE_DIR="${DATABASE_DIR_SQLITE:-/data/db/sqlite}/$SERVER_NAME"
|
||||||
|
DATABASE_BASE_DIR="${DATABASE_DIR_SQLITE:-/data/db/sqlite}/$SERVER_NAME"
|
||||||
|
DATABASE_ADMIN_WWW_ROOT="${DATABASE_ADMIN_WWW_ROOT_SQLITE:-/usr/local/share/httpd/admin/sqlite}"
|
||||||
|
if [ -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
SERVER_ADMIN_URL="${SERVER_ADMIN_URL_SQLITE:-/admin/sqlite}"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$DATABASE_DIR" ]; then
|
||||||
|
mkdir -p "$DATABASE_DIR"
|
||||||
|
fi
|
||||||
|
chmod 777 "$DATABASE_DIR"
|
||||||
|
fi
|
||||||
|
if [ -n "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
if [ ! -d "$DATABASE_ADMIN_WWW_ROOT" ]; then
|
||||||
|
mkdir -p "${DATABASE_ADMIN_WWW_ROOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow variables via imports - Overwrite existing
|
||||||
|
if [ -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ]; then
|
||||||
|
. "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set password to random if variable is random
|
||||||
|
if [ "$user_pass" = "random" ]; then
|
||||||
|
user_pass="$(__random_password ${RANDOM_PASS_USER:-16})"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
if [ "$root_user_pass" = "random" ]; then
|
||||||
|
root_user_pass="$(__random_password ${RANDOM_PASS_ROOT:-16})"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow setting initial users and passwords via environment and save to file
|
||||||
|
if [ -n "$user_name" ]; then
|
||||||
|
echo "$user_name" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_name"
|
||||||
|
fi
|
||||||
|
if [ -n "$user_pass" ]; then
|
||||||
|
echo "$user_pass" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_name" ]; then
|
||||||
|
echo "$root_user_name" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"
|
||||||
|
fi
|
||||||
|
if [ -n "$root_user_pass" ]; then
|
||||||
|
echo "$root_user_pass" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create needed dirs
|
||||||
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$RUN_DIR" ]; then
|
||||||
|
mkdir -p "$RUN_DIR"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Allow per init script usernames and passwords
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_name"; then
|
||||||
|
user_name="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"; then
|
||||||
|
user_pass="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"; then
|
||||||
|
root_user_name="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"; then
|
||||||
|
root_user_pass="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${USER_FILE_PREFIX}/db_pass_user"; then
|
||||||
|
DATABASE_PASS_NORMAL="$(<"${USER_FILE_PREFIX}/db_pass_user")"
|
||||||
|
fi
|
||||||
|
if __file_exists_with_content "${ROOT_FILE_PREFIX}/db_pass_root"; then
|
||||||
|
DATABASE_PASS_ROOT="$(<"${ROOT_FILE_PREFIX}/db_pass_root")"
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set hostname for script
|
||||||
|
sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__create_service_env
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Setup /config directories
|
||||||
|
__init_config_etc
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# pre-run function
|
||||||
|
__execute_prerun
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# create user if needed
|
||||||
|
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Modify user if needed
|
||||||
|
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Create base directories
|
||||||
|
__setup_directories
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# set switch user command
|
||||||
|
__switch_to_user
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Initialize the home/working dir
|
||||||
|
__init_working_dir
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# show init message
|
||||||
|
__pre_message
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
__initialize_db_users
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Initialize ssl
|
||||||
|
__update_ssl_conf
|
||||||
|
__update_ssl_certs
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set permissions in ${USER_FILE_PREFIX} and ${ROOT_FILE_PREFIX}
|
||||||
|
__run_secure_function
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_precopy
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Copy /config to /etc
|
||||||
|
for config_2_etc in $CONF_DIR $ADDITIONAL_CONFIG_DIRS; do
|
||||||
|
__initialize_system_etc "$config_2_etc" 2>/dev/stderr | tee -p -a "/data/logs/init.txt"
|
||||||
|
done
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Replace variables
|
||||||
|
__initialize_replace_variables "$ETC_DIR" "$CONF_DIR" "$ADDITIONAL_CONFIG_DIRS" "$WWW_ROOT_DIR"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
__initialize_database
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Updating config files
|
||||||
|
__update_conf_files
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# run the pre execute commands
|
||||||
|
__pre_execute
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# Set permissions
|
||||||
|
__fix_permissions "$SERVICE_USER" "$SERVICE_GROUP"
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
#
|
||||||
|
if ! __run_pre_execute_checks 2>/dev/stderr | tee -a -p "/data/logs/entrypoint.log" "/data/logs/init.txt"; then
|
||||||
|
return 20
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__run_start_script 2>>/dev/stderr | tee -p -a "/data/logs/entrypoint.log"
|
||||||
|
errorCode=$?
|
||||||
|
if [ -n "$EXEC_CMD_BIN" ]; then
|
||||||
|
if [ "$errorCode" -eq 0 ]; then
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
SERVICE_IS_RUNNING="yes"
|
||||||
|
else
|
||||||
|
SERVICE_EXIT_CODE=$errorCode
|
||||||
|
SERVICE_IS_RUNNING="${SERVICE_IS_RUNNING:-no}"
|
||||||
|
if [ ! -s "$SERVICE_PID_FILE" ]; then
|
||||||
|
rm -Rf "$SERVICE_PID_FILE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
SERVICE_EXIT_CODE=0
|
||||||
|
fi
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
# start the post execute function in background
|
||||||
|
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
||||||
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
__script_exit $SERVICE_EXIT_CODE
|
||||||
@@ -1,596 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# shellcheck shell=bash
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
##@Version : 202408270905-git
|
|
||||||
# @@Author : Jason Hempstead
|
|
||||||
# @@Contact : jason@casjaysdev.pro
|
|
||||||
# @@License : WTFPL
|
|
||||||
# @@ReadME : 99-nginx.sh --help
|
|
||||||
# @@Copyright : Copyright: (c) 2024 Jason Hempstead, Casjays Developments
|
|
||||||
# @@Created : Tuesday, Aug 27, 2024 09:05 EDT
|
|
||||||
# @@File : 99-nginx.sh
|
|
||||||
# @@Description :
|
|
||||||
# @@Changelog : New script
|
|
||||||
# @@TODO : Better documentation
|
|
||||||
# @@Other :
|
|
||||||
# @@Resource :
|
|
||||||
# @@Terminal App : no
|
|
||||||
# @@sudo/root : no
|
|
||||||
# @@Template : other/start-service
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
# shellcheck disable=SC2031
|
|
||||||
# shellcheck disable=SC2120
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
# shellcheck disable=SC2199
|
|
||||||
# shellcheck disable=SC2317
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# run trap command on exit
|
|
||||||
trap 'retVal=$?;[ "$SERVICE_IS_RUNNING" != "yes" ] && [ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE";exit $retVal' SIGINT SIGTERM EXIT
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
|
||||||
[ -f "/config/.debug" ] && [ -z "$DEBUGGER_OPTIONS" ] && export DEBUGGER_OPTIONS="$(<"/config/.debug")" || DEBUGGER_OPTIONS="${DEBUGGER_OPTIONS:-}"
|
|
||||||
{ [ "$DEBUGGER" = "on" ] || [ -f "/config/.debug" ]; } && echo "Enabling debugging" && set -xo pipefail -x$DEBUGGER_OPTIONS && export DEBUGGER="on" || set -o pipefail
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
export PATH="/usr/local/etc/docker/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
SCRIPT_FILE="$0"
|
|
||||||
SERVICE_NAME="nginx"
|
|
||||||
SCRIPT_NAME="$(basename "$SCRIPT_FILE" 2>/dev/null)"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# exit if __start_init_scripts function hasn't been Initialized
|
|
||||||
if [ ! -f "/run/__start_init_scripts.pid" ]; then
|
|
||||||
echo "__start_init_scripts function hasn't been Initialized" >&2
|
|
||||||
SERVICE_IS_RUNNING="no"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# import the functions file
|
|
||||||
if [ -f "/usr/local/etc/docker/functions/entrypoint.sh" ]; then
|
|
||||||
. "/usr/local/etc/docker/functions/entrypoint.sh"
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# import variables
|
|
||||||
for set_env in "/root/env.sh" "/usr/local/etc/docker/env"/*.sh "/config/env"/*.sh; do
|
|
||||||
[ -f "$set_env" ] && . "$set_env"
|
|
||||||
done
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
printf '%s\n' "# - - - Initializing $SERVICE_NAME - - - #"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom functions
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Script to execute
|
|
||||||
START_SCRIPT="/usr/local/etc/docker/exec/$SERVICE_NAME"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Reset environment before executing service
|
|
||||||
RESET_ENV="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the database root dir - [DATABASE_DIR_SQLITE,DATABASE_DIR_REDIS,DATABASE_DIR_POSTGRES,DATABASE_DIR_MARIADB,DATABASE_DIR_COUCHDB,DATABASE_DIR_MONGODB,DATABASE_DIR_SUPABASE]
|
|
||||||
DATABASE_BASE_DIR="${DATABASE_BASE_DIR:-/data/db}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the database sub directory [sqlite,postgres,mysql,mariadb,redis,couchdb,mongodb,$APPNAME]
|
|
||||||
DATABASE_SUBDIR="nginx"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the database directory - set by the above variables
|
|
||||||
DATABASE_DIR="$DATABASE_BASE_DIR/$DATABASE_SUBDIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set webroot
|
|
||||||
WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Default predefined variables
|
|
||||||
DATA_DIR="/data/nginx" # set data directory
|
|
||||||
CONF_DIR="/config/nginx" # set config directory
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the containers etc directory
|
|
||||||
ETC_DIR="/etc/nginx"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set the var dir
|
|
||||||
VAR_DIR=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
TMP_DIR="/tmp/nginx" # set the temp dir
|
|
||||||
RUN_DIR="/run/nginx" # set scripts pid dir
|
|
||||||
LOG_DIR="/data/logs/nginx" # set log directory
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the working dir
|
|
||||||
WORK_DIR=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# port which service is listening on
|
|
||||||
SERVICE_PORT="80"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# User to use to launch service - IE: postgres
|
|
||||||
RUNAS_USER="root" # normally root
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# User and group in which the service switches to - IE: nginx,apache,mysql,postgres
|
|
||||||
SERVICE_USER="nginx" # execute command as another user
|
|
||||||
SERVICE_GROUP="nginx" # Set the service group
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set password length
|
|
||||||
RANDOM_PASS_USER=""
|
|
||||||
RANDOM_PASS_ROOT=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set user and group ID
|
|
||||||
SERVICE_UID="0" # set the user id
|
|
||||||
SERVICE_GID="0" # set the group id
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# execute command variables - keep single quotes variables will be expanded later
|
|
||||||
EXEC_CMD_BIN='nginx' # command to execute
|
|
||||||
EXEC_CMD_ARGS='-c $ETC_DIR/nginx.conf' # command arguments
|
|
||||||
EXEC_PRE_SCRIPT='' # execute script before
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Is this service a web server
|
|
||||||
IS_WEB_SERVER="yes"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Is this service a database server
|
|
||||||
IS_DATABASE_SERVICE="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Does this service use a database server
|
|
||||||
USES_DATABASE_SERVICE="no"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Show message before execute
|
|
||||||
PRE_EXEC_MESSAGE=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set the wait time to execute __post_execute function - minutes
|
|
||||||
POST_EXECUTE_WAIT_TIME="1"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Update path var
|
|
||||||
PATH="$PATH:."
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Where to save passwords to
|
|
||||||
ROOT_FILE_PREFIX="/config/secure/auth/root" # directory to save username/password for root user
|
|
||||||
USER_FILE_PREFIX="/config/secure/auth/user" # directory to save username/password for normal user
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# root/admin user info password/random]
|
|
||||||
root_user_name="${NGINX_ROOT_USER_NAME:-}" # root user name
|
|
||||||
root_user_pass="${NGINX_ROOT_PASS_WORD:-}" # root user password
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Normal user info [password/random]
|
|
||||||
user_name="${NGINX_USER_NAME:-}" # normal user name
|
|
||||||
user_pass="${NGINX_USER_PASS_WORD:-}" # normal user password
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Load variables from config
|
|
||||||
[ -f "/config/env/nginx.script.sh" ] && . "/config/env/nginx.script.sh" # Generated by my dockermgr script
|
|
||||||
[ -f "/config/env/nginx.sh" ] && . "/config/env/nginx.sh" # Overwrite the variabes
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional predefined variables
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional variables
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Specifiy custom directories to be created
|
|
||||||
ADD_APPLICATION_FILES=""
|
|
||||||
ADD_APPLICATION_DIRS=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
APPLICATION_FILES="$LOG_DIR/$SERVICE_NAME.log"
|
|
||||||
APPLICATION_DIRS="$RUN_DIR $ETC_DIR $CONF_DIR $LOG_DIR $TMP_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Additional config dirs - will be Copied to /etc/$name
|
|
||||||
ADDITIONAL_CONFIG_DIRS=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define variables that need to be loaded into the service - escape quotes - var=\"value\",other=\"test\"
|
|
||||||
CMD_ENV=""
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Overwrite based on file/directory
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Per Application Variables or imports
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom commands to run before copying to /config
|
|
||||||
__run_precopy() {
|
|
||||||
# Define environment
|
|
||||||
local hostname=${HOSTNAME}
|
|
||||||
# Define actions/commands
|
|
||||||
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Custom prerun functions - IE setup WWW_ROOT_DIR
|
|
||||||
__execute_prerun() {
|
|
||||||
# Define environment
|
|
||||||
local hostname=${HOSTNAME}
|
|
||||||
# Define actions/commands
|
|
||||||
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Run any pre-execution checks
|
|
||||||
__run_pre_execute_checks() {
|
|
||||||
# Set variables
|
|
||||||
local exitStatus=0
|
|
||||||
local pre_execute_checks_MessageST="Running preexecute check for $SERVICE_NAME" # message to show at start
|
|
||||||
local pre_execute_checks_MessageEnd="Finished preexecute check for $SERVICE_NAME" # message to show at completion
|
|
||||||
__banner "$pre_execute_checks_MessageST"
|
|
||||||
# Put command to execute in parentheses
|
|
||||||
{
|
|
||||||
true
|
|
||||||
}
|
|
||||||
exitStatus=$?
|
|
||||||
__banner "$pre_execute_checks_MessageEnd: Status $exitStatus"
|
|
||||||
|
|
||||||
# show exit message
|
|
||||||
if [ $exitStatus -ne 0 ]; then
|
|
||||||
echo "The pre-execution check has failed" >&2
|
|
||||||
[ -f "$SERVICE_PID_FILE" ] && rm -Rf "$SERVICE_PID_FILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
return $exitStatus
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to update config files - IE: change port
|
|
||||||
__update_conf_files() {
|
|
||||||
local exitCode=0 # default exit code
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# delete files
|
|
||||||
#__rm ""
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# custom commands
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# replace variables
|
|
||||||
# __replace "" "" "$CONF_DIR/nginx.conf"
|
|
||||||
# replace variables recursively
|
|
||||||
# __find_replace "" "" "$CONF_DIR"
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define actions
|
|
||||||
|
|
||||||
# exit function
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# function to run before executing
|
|
||||||
__pre_execute() {
|
|
||||||
local exitCode=0 # default exit code
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# execute if directories is empty
|
|
||||||
# __is_dir_empty "$CONF_DIR" && true
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# define actions to run after copying to /config
|
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# unset unneeded variables
|
|
||||||
# unset
|
|
||||||
# Lets wait a few seconds before continuing
|
|
||||||
sleep 5
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# function to run after executing
|
|
||||||
__post_execute() {
|
|
||||||
local pid="" # init pid var
|
|
||||||
local retVal=0 # set default exit code
|
|
||||||
local ctime=${POST_EXECUTE_WAIT_TIME:-1} # how long to wait before executing
|
|
||||||
local waitTime=$((ctime * 60)) # convert minutes to seconds
|
|
||||||
local postMessageST="Running post commands for $SERVICE_NAME" # message to show at start
|
|
||||||
local postMessageEnd="Finished post commands for $SERVICE_NAME" # message to show at completion
|
|
||||||
# wait
|
|
||||||
sleep $waitTime
|
|
||||||
# execute commands after waiting
|
|
||||||
(
|
|
||||||
# show message
|
|
||||||
__banner "$postMessageST"
|
|
||||||
# commands to execute
|
|
||||||
true
|
|
||||||
# show exit message
|
|
||||||
__banner "$postMessageEnd: Status $retVal"
|
|
||||||
) 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
|
||||||
pid=$!
|
|
||||||
# set exitCode
|
|
||||||
ps ax | awk '{print $1}' | grep -v grep | grep -q "$execPid$" && retVal=0 || retVal=10
|
|
||||||
return $retVal
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to update config files - IE: change port
|
|
||||||
__pre_message() {
|
|
||||||
local exitCode=0
|
|
||||||
[ -n "$PRE_EXEC_MESSAGE" ] && eval echo "$PRE_EXEC_MESSAGE"
|
|
||||||
# execute commands
|
|
||||||
|
|
||||||
# set exitCode
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# use this function to setup ssl support
|
|
||||||
__update_ssl_conf() {
|
|
||||||
local exitCode=0
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
# execute commands
|
|
||||||
|
|
||||||
# set exitCode
|
|
||||||
return $exitCode
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__create_service_env() {
|
|
||||||
cat <<EOF | tee -p "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" &>/dev/null
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# root/admin user info [password/random]
|
|
||||||
#ENV_ROOT_USER_NAME="${ENV_ROOT_USER_NAME:-$NGINX_ROOT_USER_NAME}" # root user name
|
|
||||||
#ENV_ROOT_USER_PASS="${ENV_ROOT_USER_NAME:-$NGINX_ROOT_PASS_WORD}" # root user password
|
|
||||||
#root_user_name="${ENV_ROOT_USER_NAME:-$root_user_name}" #
|
|
||||||
#root_user_pass="${ENV_ROOT_USER_PASS:-$root_user_pass}" #
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#Normal user info [password/random]
|
|
||||||
#ENV_USER_NAME="${ENV_USER_NAME:-$NGINX_USER_NAME}" #
|
|
||||||
#ENV_USER_PASS="${ENV_USER_PASS:-$NGINX_USER_PASS_WORD}" #
|
|
||||||
#user_name="${ENV_USER_NAME:-$user_name}" # normal user name
|
|
||||||
#user_pass="${ENV_USER_PASS:-$user_pass}" # normal user password
|
|
||||||
|
|
||||||
EOF
|
|
||||||
__file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" || return 1
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# script to start server
|
|
||||||
__run_start_script() {
|
|
||||||
local runExitCode=0
|
|
||||||
local workdir="$(eval echo "${WORK_DIR:-}")" # expand variables
|
|
||||||
local cmd="$(eval echo "${EXEC_CMD_BIN:-}")" # expand variables
|
|
||||||
local args="$(eval echo "${EXEC_CMD_ARGS:-}")" # expand variables
|
|
||||||
local name="$(eval echo "${EXEC_CMD_NAME:-}")" # expand variables
|
|
||||||
local pre="$(eval echo "${EXEC_PRE_SCRIPT:-}")" # expand variables
|
|
||||||
local extra_env="$(eval echo "${CMD_ENV//,/ }")" # expand variables
|
|
||||||
local lc_type="$(eval echo "${LANG:-${LC_ALL:-$LC_CTYPE}}")" # expand variables
|
|
||||||
local home="$(eval echo "${workdir//\/root/\/tmp\/docker}")" # expand variables
|
|
||||||
local path="$(eval echo "$PATH")" # expand variables
|
|
||||||
local message="$(eval echo "")" # expand variables
|
|
||||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}" # set hostname
|
|
||||||
[ -f "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh" ] && . "$CONF_DIR/$SERVICE_NAME.exec_cmd.sh"
|
|
||||||
#
|
|
||||||
if [ -z "$cmd" ]; then
|
|
||||||
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt"
|
|
||||||
retVal=$?
|
|
||||||
echo "Initializing $SCRIPT_NAME has completed"
|
|
||||||
exit $retVal
|
|
||||||
else
|
|
||||||
# ensure the command exists
|
|
||||||
if [ ! -x "$cmd" ]; then
|
|
||||||
echo "$name is not a valid executable"
|
|
||||||
return 2
|
|
||||||
fi
|
|
||||||
# check and exit if already running
|
|
||||||
if __proc_check "$name" || __proc_check "$cmd"; then
|
|
||||||
echo "$name is already running" >&2
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# show message if env exists
|
|
||||||
if [ -n "$cmd" ]; then
|
|
||||||
[ -n "$SERVICE_USER" ] && echo "Setting up $cmd to run as $SERVICE_USER" || SERVICE_USER="root"
|
|
||||||
[ -n "$SERVICE_PORT" ] && echo "$name will be running on port $SERVICE_PORT" || SERVICE_PORT=""
|
|
||||||
fi
|
|
||||||
if [ -n "$pre" ] && [ -n "$(command -v "$pre" 2>/dev/null)" ]; then
|
|
||||||
export cmd_exec="$pre $cmd $args"
|
|
||||||
message="Starting service: $name $args through $pre"
|
|
||||||
else
|
|
||||||
export cmd_exec="$cmd $args"
|
|
||||||
message="Starting service: $name $args"
|
|
||||||
fi
|
|
||||||
[ -n "$su_exec" ] && echo "using $su_exec" | tee -a -p "/data/logs/init.txt"
|
|
||||||
echo "$message" | tee -a -p "/data/logs/init.txt"
|
|
||||||
su_cmd touch "$SERVICE_PID_FILE"
|
|
||||||
if [ "$RESET_ENV" = "yes" ]; then
|
|
||||||
env_command="$(echo "env -i HOME=\"$home\" LC_CTYPE=\"$lc_type\" PATH=\"$path\" HOSTNAME=\"$sysname\" USER=\"${SERVICE_USER:-$RUNAS_USER}\" $extra_env")"
|
|
||||||
execute_command="$(__trim "$su_exec $env_command $cmd_exec")"
|
|
||||||
if [ ! -f "$START_SCRIPT" ]; then
|
|
||||||
cat <<EOF >"$START_SCRIPT"
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
|
||||||
#
|
|
||||||
set -Eeo pipefail
|
|
||||||
# Setting up $cmd to run as ${SERVICE_USER:-root} with env
|
|
||||||
retVal=10
|
|
||||||
cmd="$cmd"
|
|
||||||
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
|
||||||
$execute_command 2>"/dev/stderr" >>"$LOG_DIR/$SERVICE_NAME.log" &
|
|
||||||
execPid=\$!
|
|
||||||
sleep 10
|
|
||||||
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
|
||||||
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
|
||||||
[ "\$retVal" = 0 ] && echo "\$cmd has been started" || echo "Failed to start $execute_command" >&2
|
|
||||||
exit \$retVal
|
|
||||||
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ ! -f "$START_SCRIPT" ]; then
|
|
||||||
execute_command="$(__trim "$su_exec $cmd_exec")"
|
|
||||||
cat <<EOF >"$START_SCRIPT"
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
trap 'exitCode=\$?;[ \$exitCode -ne 0 ] && [ -f "\$SERVICE_PID_FILE" ] && rm -Rf "\$SERVICE_PID_FILE";exit \$exitCode' EXIT
|
|
||||||
#
|
|
||||||
set -Eeo pipefail
|
|
||||||
# Setting up $cmd to run as ${SERVICE_USER:-root}
|
|
||||||
retVal=10
|
|
||||||
cmd="$cmd"
|
|
||||||
SERVICE_PID_FILE="$SERVICE_PID_FILE"
|
|
||||||
$execute_command 2>>"/dev/stderr" >>"$LOG_DIR/$SERVICE_NAME.log" &
|
|
||||||
execPid=\$!
|
|
||||||
sleep 10
|
|
||||||
checkPID="\$(ps ax | awk '{print \$1}' | grep -v grep | grep "\$execPid$" || false)"
|
|
||||||
[ -n "\$execPid" ] && [ -n "\$checkPID" ] && echo "\$execPid" >"\$SERVICE_PID_FILE" && retVal=0 || retVal=10
|
|
||||||
[ "\$retVal" = 0 ] && echo "\$cmd has been started" || echo "Failed to start $execute_command" >&2 >&2
|
|
||||||
exit \$retVal
|
|
||||||
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
[ -x "$START_SCRIPT" ] || chmod 755 -Rf "$START_SCRIPT"
|
|
||||||
[ "$CONTAINER_INIT" = "yes" ] || eval sh -c "$START_SCRIPT"
|
|
||||||
runExitCode=$?
|
|
||||||
return $runExitCode
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# username and password actions
|
|
||||||
__run_secure_function() {
|
|
||||||
local filesperms
|
|
||||||
if [ -n "$user_name" ] || [ -n "$user_pass" ]; then
|
|
||||||
for filesperms in "${USER_FILE_PREFIX}"/*; do
|
|
||||||
if [ -e "$filesperms" ]; then
|
|
||||||
chmod -Rf 600 "$filesperms"
|
|
||||||
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
|
||||||
fi
|
|
||||||
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
|
||||||
fi
|
|
||||||
if [ -n "$root_user_name" ] || [ -n "$root_user_pass" ]; then
|
|
||||||
for filesperms in "${ROOT_FILE_PREFIX}"/*; do
|
|
||||||
if [ -e "$filesperms" ]; then
|
|
||||||
chmod -Rf 600 "$filesperms"
|
|
||||||
chown -Rf $SERVICE_USER:$SERVICE_USER "$filesperms" 2>/dev/null
|
|
||||||
fi
|
|
||||||
done 2>/dev/null | tee -p -a "/data/logs/init.txt"
|
|
||||||
fi
|
|
||||||
unset filesperms
|
|
||||||
}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow ENV_ variable - Import env file
|
|
||||||
__file_exists_with_content "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" && . "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
SERVICE_EXIT_CODE=0 # default exit code
|
|
||||||
# application specific
|
|
||||||
EXEC_CMD_NAME="$(basename "$EXEC_CMD_BIN")" # set the binary name
|
|
||||||
SERVICE_PID_FILE="/run/init.d/$EXEC_CMD_NAME.pid" # set the pid file location
|
|
||||||
SERVICE_PID_NUMBER="$(__pgrep)" # check if running
|
|
||||||
EXEC_CMD_BIN="$(type -P "$EXEC_CMD_BIN" || echo "$EXEC_CMD_BIN")" # set full path
|
|
||||||
EXEC_PRE_SCRIPT="$(type -P "$EXEC_PRE_SCRIPT" || echo "$EXEC_PRE_SCRIPT")" # set full path
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Only run check
|
|
||||||
__check_service "$1" && SERVICE_IS_RUNNING=yes
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# ensure needed directories exists
|
|
||||||
[ -d "$LOG_DIR" ] || mkdir -p "$LOG_DIR"
|
|
||||||
[ -d "$RUN_DIR" ] || mkdir -p "$RUN_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# create auth directories
|
|
||||||
[ -n "$USER_FILE_PREFIX" ] && { [ -d "$USER_FILE_PREFIX" ] || mkdir -p "$USER_FILE_PREFIX"; }
|
|
||||||
[ -n "$ROOT_FILE_PREFIX" ] && { [ -d "$ROOT_FILE_PREFIX" ] || mkdir -p "$ROOT_FILE_PREFIX"; }
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
[ -n "$RUNAS_USER" ] || RUNAS_USER="root"
|
|
||||||
[ -n "$SERVICE_USER" ] || SERVICE_USER="$RUNAS_USER"
|
|
||||||
[ -n "$SERVICE_GROUP" ] || SERVICE_GROUP="${SERVICE_USER:-$RUNAS_USER}"
|
|
||||||
[ "$IS_WEB_SERVER" = "yes" ] && RESET_ENV="yes" && __is_htdocs_mounted
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Database env
|
|
||||||
if [ "$IS_DATABASE_SERVICE" = "yes" ] || [ "$USES_DATABASE_SERVICE" = "yes" ]; then
|
|
||||||
RESET_ENV="no"
|
|
||||||
DATABASE_CREATE="${ENV_DATABASE_CREATE:-$DATABASE_CREATE}"
|
|
||||||
DATABASE_USER="${ENV_DATABASE_USER:-${DATABASE_USER:-$user_name}}"
|
|
||||||
DATABASE_PASSWORD="${ENV_DATABASE_PASSWORD:-${DATABASE_PASSWORD:-$user_pass}}"
|
|
||||||
DATABASE_ROOT_USER="${ENV_DATABASE_ROOT_USER:-${DATABASE_ROOT_USER:-$root_user_name}}"
|
|
||||||
DATABASE_ROOT_PASSWORD="${ENV_DATABASE_ROOT_PASSWORD:-${DATABASE_ROOT_PASSWORD:-$root_user_pass}}"
|
|
||||||
if [ -n "$DATABASE_PASSWORD" ] && [ ! -f "${USER_FILE_PREFIX}/db_pass_user" ]; then
|
|
||||||
echo "$DATABASE_PASSWORD" >"${USER_FILE_PREFIX}/db_pass_user"
|
|
||||||
fi
|
|
||||||
if [ -n "$DATABASE_ROOT_PASSWORD" ] && [ ! -f "${ROOT_FILE_PREFIX}/db_pass_root" ]; then
|
|
||||||
echo "$DATABASE_ROOT_PASSWORD" >"${ROOT_FILE_PREFIX}/db_pass_root"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow variables via imports - Overwrite existing
|
|
||||||
[ -f "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh" ] && . "/config/env/${SERVICE_NAME:-$SCRIPT_NAME}.sh"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set password to random if variable is random
|
|
||||||
[ "$user_pass" = "random" ] && user_pass="$(__random_password ${RANDOM_PASS_USER:-16})"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
[ "$root_user_pass" = "random" ] && root_user_pass="$(__random_password ${RANDOM_PASS_ROOT:-16})"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow setting initial users and passwords via environment and save to file
|
|
||||||
[ -n "$user_name" ] && echo "$user_name" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_name"
|
|
||||||
[ -n "$user_pass" ] && echo "$user_pass" >"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
|
||||||
[ -n "$root_user_name" ] && echo "$root_user_name" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name"
|
|
||||||
[ -n "$root_user_pass" ] && echo "$root_user_pass" >"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Allow per init script usernames and passwords
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_name" && user_name="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/${SERVICE_NAME}_pass" && user_pass="$(<"${USER_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name" && root_user_name="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_name")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass" && root_user_pass="$(<"${ROOT_FILE_PREFIX}/${SERVICE_NAME}_pass")"
|
|
||||||
__file_exists_with_content "${USER_FILE_PREFIX}/db_pass_user" && DATABASE_PASSWORD="$(<"${USER_FILE_PREFIX}/db_pass_user")"
|
|
||||||
__file_exists_with_content "${ROOT_FILE_PREFIX}/db_pass_root" && DATABASE_ROOT_PASSWORD="$(<"${ROOT_FILE_PREFIX}/db_pass_root")"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set hostname for script
|
|
||||||
sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__create_service_env
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Setup /config directories
|
|
||||||
__init_config_etc
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# pre-run function
|
|
||||||
__execute_prerun
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# create user if needed
|
|
||||||
__create_service_user "$SERVICE_USER" "$SERVICE_GROUP" "${WORK_DIR:-/home/$SERVICE_USER}" "${SERVICE_UID:-}" "${SERVICE_GID:-}"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Modify user if needed
|
|
||||||
__set_user_group_id $SERVICE_USER ${SERVICE_UID:-} ${SERVICE_GID:-}
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Create base directories
|
|
||||||
__setup_directories
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# set switch user command
|
|
||||||
__switch_to_user
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Initialize the home/working dir
|
|
||||||
__init_working_dir
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# show init message
|
|
||||||
__pre_message
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__initialize_db_users
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Initialize ssl
|
|
||||||
__update_ssl_conf
|
|
||||||
__update_ssl_certs
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set permissions in ${USER_FILE_PREFIX} and ${ROOT_FILE_PREFIX}
|
|
||||||
__run_secure_function
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__run_precopy
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Copy /config to /etc
|
|
||||||
for config_2_etc in $CONF_DIR $ADDITIONAL_CONFIG_DIRS; do
|
|
||||||
__initialize_system_etc "$config_2_etc" 2>/dev/stderr | tee -p -a "/data/logs/init.txt"
|
|
||||||
done
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Replace variables
|
|
||||||
__initialize_replace_variables "$ETC_DIR" "$CONF_DIR" "$ADDITIONAL_CONFIG_DIRS" "$WWW_ROOT_DIR"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__initialize_database
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Updating config files
|
|
||||||
__update_conf_files
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# run the pre execute commands
|
|
||||||
__pre_execute
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# Set permissions
|
|
||||||
__fix_permissions "$SERVICE_USER" "$SERVICE_GROUP"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
#
|
|
||||||
__run_pre_execute_checks 2>/dev/stderr | tee -a -p "/data/logs/entrypoint.log" "/data/logs/init.txt" || return 20
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__run_start_script 2>>/dev/stderr | tee -p -a "/data/logs/entrypoint.log"
|
|
||||||
errorCode=$?
|
|
||||||
if [ -n "$EXEC_CMD_BIN" ]; then
|
|
||||||
if [ "$errorCode" -eq 0 ]; then
|
|
||||||
SERVICE_EXIT_CODE=0
|
|
||||||
SERVICE_IS_RUNNING="yes"
|
|
||||||
else
|
|
||||||
SERVICE_EXIT_CODE=$errorCode
|
|
||||||
SERVICE_IS_RUNNING="${SERVICE_IS_RUNNING:-no}"
|
|
||||||
[ -s "$SERVICE_PID_FILE" ] || rm -Rf "$SERVICE_PID_FILE"
|
|
||||||
fi
|
|
||||||
SERVICE_EXIT_CODE=0
|
|
||||||
fi
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
# start the post execute function in background
|
|
||||||
__post_execute 2>"/dev/stderr" | tee -p -a "/data/logs/init.txt" &
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
__banner "Initializing of $SERVICE_NAME has completed with statusCode: $SERVICE_EXIT_CODE" | tee -p -a "/data/logs/entrypoint.log" "/data/logs/init.txt"
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
exit $SERVICE_EXIT_CODE
|
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Set bash options
|
# Set bash options
|
||||||
[ "$DEBUGGER" = "on" ] && echo "Enabling debugging" && set -o pipefail -x$DEBUGGER_OPTIONS || set -o pipefail
|
[ "$DEBUGGER" = "on" ] && echo "Enabling debugging" && set -o pipefail -x$DEBUGGER_OPTIONS || set -o pipefail
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# import the functions file
|
# import the functions file
|
||||||
[ -f "/usr/local/etc/docker/functions/entrypoint.sh" ] && . "/usr/local/etc/docker/functions/entrypoint.sh"
|
[ -f "/usr/local/etc/docker/functions/entrypoint.sh" ] && . "/usr/local/etc/docker/functions/entrypoint.sh"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# GLOBAL enviroment variables
|
# GLOBAL enviroment variables
|
||||||
#USER="${USER:-root}"
|
#USER="${USER:-root}"
|
||||||
#LANG="${LANG:-C.UTF-8}"
|
#LANG="${LANG:-C.UTF-8}"
|
||||||
#TZ="${TZ:-America/New_York}"
|
#TZ="${TZ:-America/New_York}"
|
||||||
#SERVICE_USER="${SERVICE_USER:-root}"
|
#SERVICE_USER="${SERVICE_USER:-root}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# directory settings
|
# directory settings
|
||||||
#BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
|
#BACKUP_DIR="${BACKUP_DIR:-/data/backups}"
|
||||||
#WWW_ROOT_DIR="${WWW_ROOT_DIR:-/usr/local/share/httpd/default}"
|
#WWW_ROOT_DIR="${WWW_ROOT_DIR:-/usr/local/share/httpd/default}"
|
||||||
@@ -21,39 +21,39 @@
|
|||||||
#DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
|
#DEFAULT_CONF_DIR="${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}"
|
||||||
#DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
|
#DEFAULT_TEMPLATE_DIR="${DEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}"
|
||||||
#DBTYPE="sqlite"
|
#DBTYPE="sqlite"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# healthcheck
|
# healthcheck
|
||||||
#HEALTH_ENABLED="${HEALTH_ENABLED:-$ENV_HEALTH_ENABLED}"
|
#HEALTH_ENABLED="${HEALTH_ENABLED:-$ENV_HEALTH_ENABLED}"
|
||||||
#HEALTH_URL="${HEALTH_URL:-}"
|
#HEALTH_URL="${HEALTH_URL:-}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# php settings
|
# php settings
|
||||||
#PHP_VERSION="${PHP_VERSION//php/}"
|
#PHP_VERSION="${PHP_VERSION//php/}"
|
||||||
#PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
#PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
||||||
#PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
#PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# services/ports
|
# services/ports
|
||||||
#ENV_PORTS="${ENV_PORTS:-}"
|
#ENV_PORTS="${ENV_PORTS:-}"
|
||||||
#SERVICE_PORT="${SERVICE_PORT:-$PORT}"
|
#SERVICE_PORT="${SERVICE_PORT:-$PORT}"
|
||||||
#WEB_SERVER_PORTS="${WEB_SERVER_PORTS:-$ENV_WEB_SERVER_PORTS}"
|
#WEB_SERVER_PORTS="${WEB_SERVER_PORTS:-$ENV_WEB_SERVER_PORTS}"
|
||||||
#SERVICES_LIST="${PROCS_LIST:-$SERVICES_LIST} "
|
#SERVICES_LIST="${PROCS_LIST:-$SERVICES_LIST} "
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# networing info
|
# networing info
|
||||||
DOMAINNAME="${DOMAINNAME:-}"
|
DOMAINNAME="${DOMAINNAME:-}"
|
||||||
HOSTNAME="${HOSTNAME:-casjaysdev-GEN_SCRIPT_REPLACE_APPNAME}"
|
HOSTNAME="${HOSTNAME:-casjaysdev-GEN_SCRIPT_REPLACE_APPNAME}"
|
||||||
FULL_DOMAIN_NAME="${FULL_DOMAIN_NAME:-${DOMAINNAME:-$HOSTNAME}}"
|
FULL_DOMAIN_NAME="${FULL_DOMAIN_NAME:-${DOMAINNAME:-$HOSTNAME}}"
|
||||||
SERVER_ADMIN="${SERVER_ADMIN:-root@${EMAIL_DOMAIN:-${DOMAINNAME:-$FULL_DOMAIN_NAME}}}"
|
SERVER_ADMIN="${SERVER_ADMIN:-root@${EMAIL_DOMAIN:-${DOMAINNAME:-$FULL_DOMAIN_NAME}}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
EMAIL_RELAY="${EMAIL_RELAY:-}"
|
EMAIL_RELAY="${EMAIL_RELAY:-}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# get ip addresses
|
# get ip addresses
|
||||||
CONTAINER_IP4_ADDRESS="${CONTAINER_IP4_ADDRESS:-$(__get_ip4)}"
|
CONTAINER_IP4_ADDRESS="${CONTAINER_IP4_ADDRESS:-$(__get_ip4)}"
|
||||||
CONTAINER_IP6_ADDRESS="${CONTAINER_IP6_ADDRESS:-$(__get_ip6)}"
|
CONTAINER_IP6_ADDRESS="${CONTAINER_IP6_ADDRESS:-$(__get_ip6)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# cerbot
|
# cerbot
|
||||||
#CERT_BOT_MAIL="${CERT_BOT_MAIL:-}"
|
#CERT_BOT_MAIL="${CERT_BOT_MAIL:-}"
|
||||||
#CERTBOT_DOMAINS="${CERTBOT_DOMAINS:-}"
|
#CERTBOT_DOMAINS="${CERTBOT_DOMAINS:-}"
|
||||||
#CERT_BOT_ENABLED="${CERT_BOT_ENABLED:-false}"
|
#CERT_BOT_ENABLED="${CERT_BOT_ENABLED:-false}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# ssl server settings
|
# ssl server settings
|
||||||
#SSL_ENABLED="${SSL_ENABLED:-false}"
|
#SSL_ENABLED="${SSL_ENABLED:-false}"
|
||||||
#SSL_DIR="${SSL_DIR:-/config/ssl}"
|
#SSL_DIR="${SSL_DIR:-/config/ssl}"
|
||||||
@@ -69,22 +69,22 @@ CONTAINER_IP6_ADDRESS="${CONTAINER_IP6_ADDRESS:-$(__get_ip6)}"
|
|||||||
#DAYS_VALID="${DAYS_VALID:-3650}"
|
#DAYS_VALID="${DAYS_VALID:-3650}"
|
||||||
#RSA="${RSA:-4096}"
|
#RSA="${RSA:-4096}"
|
||||||
#CN="${CN:-$FULL_DOMAIN_NAME}"
|
#CN="${CN:-$FULL_DOMAIN_NAME}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# web server configs
|
# web server configs
|
||||||
HTTPD_CONFIG_FILE="${HTTPD_CONFIG_FILE:-$(__find_httpd_conf)}"
|
HTTPD_CONFIG_FILE="${HTTPD_CONFIG_FILE:-$(__find_httpd_conf)}"
|
||||||
NGINX_CONFIG_FILE="${NGINX_CONFIG_FILE:-$(__find_nginx_conf)}"
|
NGINX_CONFIG_FILE="${NGINX_CONFIG_FILE:-$(__find_nginx_conf)}"
|
||||||
LIGHTTPD_CONFIG_FILE="${LIGHTTPD_CONFIG_FILE:-$(__find_lighttpd_conf)}"
|
LIGHTTPD_CONFIG_FILE="${LIGHTTPD_CONFIG_FILE:-$(__find_lighttpd_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# redis env
|
# redis env
|
||||||
DATABASE_DIR_REDIS="${DATABASE_DIR_REDIS:-$DATABASE_BASE_DIR/redis}"
|
DATABASE_DIR_REDIS="${DATABASE_DIR_REDIS:-$DATABASE_BASE_DIR/redis}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# postgresql env
|
# postgresql env
|
||||||
DATABASE_DIR_PGSQL="${DATABASE_DIR_PGSQL:-$PGDATA}"
|
DATABASE_DIR_PGSQL="${DATABASE_DIR_PGSQL:-$PGDATA}"
|
||||||
PGDATA="${DATABASE_DIR_PGSQL:-$DATABASE_BASE_DIR/postgres}"
|
PGDATA="${DATABASE_DIR_PGSQL:-$DATABASE_BASE_DIR/postgres}"
|
||||||
POSTGRES_USER="${DATABASE_USER_ROOT:-$POSTGRES_USER}"
|
POSTGRES_USER="${DATABASE_USER_ROOT:-$POSTGRES_USER}"
|
||||||
POSTGRES_PASSWORD="${DATABASE_PASS_ROOT:-$POSTGRES_PASSWORD}"
|
POSTGRES_PASSWORD="${DATABASE_PASS_ROOT:-$POSTGRES_PASSWORD}"
|
||||||
POSTGRES_CONFIG_FILE="${POSTGRES_CONFIG_FILE:-$(__find_pgsql_conf)}"
|
POSTGRES_CONFIG_FILE="${POSTGRES_CONFIG_FILE:-$(__find_pgsql_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# mariadb env
|
# mariadb env
|
||||||
MARIADB_ROOT_HOST="${MARIADB_ROOT_HOST:-%}"
|
MARIADB_ROOT_HOST="${MARIADB_ROOT_HOST:-%}"
|
||||||
MARIADB_AUTO_UPGRADE="${MARIADB_AUTO_UPGRADE:-yes}"
|
MARIADB_AUTO_UPGRADE="${MARIADB_AUTO_UPGRADE:-yes}"
|
||||||
@@ -97,30 +97,30 @@ MARIADB_ALLOW_EMPTY_ROOT_PASSWORD="${MARIADB_ALLOW_EMPTY_ROOT_PASSWORD:-}"
|
|||||||
MARIADB_INITDB_SKIP_TZINFO="${MARIADB_INITDB_SKIP_TZINFO}:-"
|
MARIADB_INITDB_SKIP_TZINFO="${MARIADB_INITDB_SKIP_TZINFO}:-"
|
||||||
MARIADB_RANDOM_ROOT_PASSWORD="${MARIADB_RANDOM_ROOT_PASSWORD:-}"
|
MARIADB_RANDOM_ROOT_PASSWORD="${MARIADB_RANDOM_ROOT_PASSWORD:-}"
|
||||||
MARIADB_CONFIG_FILE="${MARIADB_CONFIG_FILE:-$(__find_mysql_conf)}"
|
MARIADB_CONFIG_FILE="${MARIADB_CONFIG_FILE:-$(__find_mysql_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# mongodb env
|
# mongodb env
|
||||||
INITDB_ROOT_USERNAME="${DATABASE_USER_ROOT:-$INITDB_ROOT_USERNAME}"
|
INITDB_ROOT_USERNAME="${DATABASE_USER_ROOT:-$INITDB_ROOT_USERNAME}"
|
||||||
DATABASE_DIR_MONGODB="${DATABASE_DIR_MONGODB:-$DATABASE_BASE_DIR/mongodb}"
|
DATABASE_DIR_MONGODB="${DATABASE_DIR_MONGODB:-$DATABASE_BASE_DIR/mongodb}"
|
||||||
MONGO_INITDB_ROOT_PASSWORD="${DATABASE_PASS_ROOT:-$MONGO_INITDB_ROOT_PASSWORD}"
|
MONGO_INITDB_ROOT_PASSWORD="${DATABASE_PASS_ROOT:-$MONGO_INITDB_ROOT_PASSWORD}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# couchdb env
|
# couchdb env
|
||||||
NODENAME="${NODENAME:-}"
|
NODENAME="${NODENAME:-}"
|
||||||
COUCHDB_USER="${DATABASE_USER_ROOT:-$COUCHDB_USER}"
|
COUCHDB_USER="${DATABASE_USER_ROOT:-$COUCHDB_USER}"
|
||||||
COUCHDB_PASSWORD="${DATABASE_PASS_ROOT:-$COUCHDB_PASSWORD}"
|
COUCHDB_PASSWORD="${DATABASE_PASS_ROOT:-$COUCHDB_PASSWORD}"
|
||||||
DATABASE_DIR_COUCHDB="${DATABASE_DIR_COUCHDB:-$DATABASE_BASE_DIR/couchdb}"
|
DATABASE_DIR_COUCHDB="${DATABASE_DIR_COUCHDB:-$DATABASE_BASE_DIR/couchdb}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Supabase
|
# Supabase
|
||||||
DATABASE_DIR_SUPABASE="${DATABASE_DIR_SUPABASE:-$DATABASE_BASE_DIR/supabase}"
|
DATABASE_DIR_SUPABASE="${DATABASE_DIR_SUPABASE:-$DATABASE_BASE_DIR/supabase}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# docker env
|
# docker env
|
||||||
DOCKER_HOST="unix://var/run/docker.sock"
|
DOCKER_HOST="unix://var/run/docker.sock"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# File locations
|
# File locations
|
||||||
ENTRYPOINT_PID_FILE="${ENTRYPOINT_PID_FILE:-/run/init.d/entrypoint.pid}"
|
ENTRYPOINT_PID_FILE="${ENTRYPOINT_PID_FILE:-/run/init.d/entrypoint.pid}"
|
||||||
ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
||||||
ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
||||||
ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Startup variables
|
# Startup variables
|
||||||
INIT_DATE="${INIT_DATE:-$(date)}"
|
INIT_DATE="${INIT_DATE:-$(date)}"
|
||||||
START_SERVICES="${START_SERVICES:-yes}"
|
START_SERVICES="${START_SERVICES:-yes}"
|
||||||
@@ -128,8 +128,8 @@ ENTRYPOINT_MESSAGE="${ENTRYPOINT_MESSAGE:-yes}"
|
|||||||
ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
||||||
DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-false}"
|
DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-false}"
|
||||||
CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-false}"
|
CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-false}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
if [ -f "$ENTRYPOINT_PID_FILE" ] || [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
if [ -f "$ENTRYPOINT_PID_FILE" ] || [ -f "$ENTRYPOINT_INIT_FILE" ]; then
|
||||||
START_SERVICES="no" ENTRYPOINT_MESSAGE="no" ENTRYPOINT_FIRST_RUN="no"
|
START_SERVICES="no" ENTRYPOINT_MESSAGE="no" ENTRYPOINT_FIRST_RUN="no"
|
||||||
fi
|
fi
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# directory settings
|
# directory settings
|
||||||
WWW_ROOT_DIR="${ENV_WWW_ROOT_DIR:-${WWW_ROOT_DIR}}"
|
WWW_ROOT_DIR="${ENV_WWW_ROOT_DIR:-${WWW_ROOT_DIR}}"
|
||||||
BACKUP_DIR="${ENV_BACKUP_DIR:-${BACKUP_DIR:-/data/backups}}"
|
BACKUP_DIR="${ENV_BACKUP_DIR:-${BACKUP_DIR:-/data/backups}}"
|
||||||
@@ -7,4 +7,4 @@ DATABASE_BASE_DIR="${ENV_DATABASE_BASE_DIR:-${DATABASE_BASE_DIR:-/data/db}}"
|
|||||||
DEFAULT_DATA_DIR="${ENV_DEFAULT_DATA_DIR:-${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}}"
|
DEFAULT_DATA_DIR="${ENV_DEFAULT_DATA_DIR:-${DEFAULT_DATA_DIR:-/usr/local/share/template-files/data}}"
|
||||||
DEFAULT_CONF_DIR="${ENV_DEFAULT_CONF_DIR:-${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}}"
|
DEFAULT_CONF_DIR="${ENV_DEFAULT_CONF_DIR:-${DEFAULT_CONF_DIR:-/usr/local/share/template-files/config}}"
|
||||||
DEFAULT_TEMPLATE_DIR="${ENV_DEFAULT_TEMPLATE_DIR:-${EDEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}}"
|
DEFAULT_TEMPLATE_DIR="${ENV_DEFAULT_TEMPLATE_DIR:-${EDEFAULT_TEMPLATE_DIR:-/usr/local/share/template-files/defaults}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# get ip addresses
|
# get ip addresses
|
||||||
CONTAINER_IP4_ADDRESS="${CONTAINER_IP4_ADDRESS:-$(__get_ip4)}"
|
CONTAINER_IP4_ADDRESS="${CONTAINER_IP4_ADDRESS:-$(__get_ip4)}"
|
||||||
CONTAINER_IP6_ADDRESS="${CONTAINER_IP6_ADDRESS:-$(__get_ip6)}"
|
CONTAINER_IP6_ADDRESS="${CONTAINER_IP6_ADDRESS:-$(__get_ip6)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# cerbot
|
# cerbot
|
||||||
CERT_BOT_MAIL="${ENV_CERT_BOT_MAIL:-$CERT_BOT_MAIL}"
|
CERT_BOT_MAIL="${ENV_CERT_BOT_MAIL:-$CERT_BOT_MAIL}"
|
||||||
CERTBOT_DOMAINS="${ENV_CERTBOT_DOMAINS:-$CERTBOT_DOMAINS}"
|
CERTBOT_DOMAINS="${ENV_CERTBOT_DOMAINS:-$CERTBOT_DOMAINS}"
|
||||||
CERT_BOT_ENABLED="${ENV_CERT_BOT_ENABLED:-${CERT_BOT_ENABLED:-false}}"
|
CERT_BOT_ENABLED="${ENV_CERT_BOT_ENABLED:-${CERT_BOT_ENABLED:-false}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# couchdb env
|
# couchdb env
|
||||||
COUCHDB_NODENAME="${ENV_COUCHDB_NODENAME:-${COUCHDB_NODENAME:-$NODENAME}}"
|
COUCHDB_NODENAME="${ENV_COUCHDB_NODENAME:-${COUCHDB_NODENAME:-$NODENAME}}"
|
||||||
COUCHDB_USER="${ENV_COUCHDB_USER:-${COUCHDB_USER:-$DATABASE_USER_ROOT}}"
|
COUCHDB_USER="${ENV_COUCHDB_USER:-${COUCHDB_USER:-$DATABASE_USER_ROOT}}"
|
||||||
COUCHDB_PASSWORD="${ENV_COUCHDB_PASSWORD:-${COUCHDB_PASSWORD:-$DATABASE_PASS_ROOT}}"
|
COUCHDB_PASSWORD="${ENV_COUCHDB_PASSWORD:-${COUCHDB_PASSWORD:-$DATABASE_PASS_ROOT}}"
|
||||||
DATABASE_DIR_COUCHDB="${ENV_DATABASE_DIR_COUCHDB:-${DATABASE_DIR_COUCHDB:-/data/db/couchdb}}"
|
DATABASE_DIR_COUCHDB="${ENV_DATABASE_DIR_COUCHDB:-${DATABASE_DIR_COUCHDB:-/data/db/couchdb}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# docker env
|
# docker env
|
||||||
DOCKER_HOST="${DOCKER_HOST:-unix://var/run/docker.sock}"
|
DOCKER_HOST="${DOCKER_HOST:-unix://var/run/docker.sock}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# GLOBAL enviroment variables
|
# GLOBAL enviroment variables
|
||||||
USER="${USER:-root}"
|
USER="${USER:-root}"
|
||||||
LANG="${LANG:-C.UTF-8}"
|
LANG="${LANG:-C.UTF-8}"
|
||||||
TZ="${TZ:-America/New_York}"
|
TZ="${TZ:-America/New_York}"
|
||||||
ENV_PORTS="${ENV_PORTS//\/*/}"
|
ENV_PORTS="${ENV_PORTS//\/*/}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# How to set permissions
|
# How to set permissions
|
||||||
SERVICE_USER="${SERVICE_USER:-}"
|
SERVICE_USER="${SERVICE_USER:-}"
|
||||||
SERVICE_GROUP="${SERVICE_GROUP:-}"
|
SERVICE_GROUP="${SERVICE_GROUP:-}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
SERVICE_UID="${SERVICE_UID:-}" # set the user id
|
SERVICE_UID="${SERVICE_UID:-}" # set the user id
|
||||||
SERVICE_GID="${SERVICE_GID:-}" # set the group id
|
SERVICE_GID="${SERVICE_GID:-}" # set the group id
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# healthcheck
|
# healthcheck
|
||||||
HEALTH_ENABLED="${HEALTH_ENABLED:-}"
|
HEALTH_ENABLED="${HEALTH_ENABLED:-}"
|
||||||
HEALTH_URL="${HEALTH_URL:-}"
|
HEALTH_URL="${HEALTH_URL:-}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# mariadb env
|
# mariadb env
|
||||||
MARIADB_ROOT_HOST="${MARIADB_ROOT_HOST:-%}"
|
MARIADB_ROOT_HOST="${MARIADB_ROOT_HOST:-%}"
|
||||||
MARIADB_AUTO_UPGRADE="${MARIADB_AUTO_UPGRADE:-yes}"
|
MARIADB_AUTO_UPGRADE="${MARIADB_AUTO_UPGRADE:-yes}"
|
||||||
@@ -11,4 +11,4 @@ MARIADB_ALLOW_EMPTY_ROOT_PASSWORD="${MARIADB_ALLOW_EMPTY_ROOT_PASSWORD:-}"
|
|||||||
MARIADB_INITDB_SKIP_TZINFO="${MARIADB_INITDB_SKIP_TZINFO}:-"
|
MARIADB_INITDB_SKIP_TZINFO="${MARIADB_INITDB_SKIP_TZINFO}:-"
|
||||||
MARIADB_RANDOM_ROOT_PASSWORD="${MARIADB_RANDOM_ROOT_PASSWORD:-}"
|
MARIADB_RANDOM_ROOT_PASSWORD="${MARIADB_RANDOM_ROOT_PASSWORD:-}"
|
||||||
MARIADB_CONFIG_FILE="${MARIADB_CONFIG_FILE:-$(__find_mysql_conf)}"
|
MARIADB_CONFIG_FILE="${MARIADB_CONFIG_FILE:-$(__find_mysql_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# mongodb env
|
# mongodb env
|
||||||
DATABASE_DIR_MONGODB="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
DATABASE_DIR_MONGODB="${DATABASE_DIR_MONGODB:-/data/db/mongodb}"
|
||||||
INITDB_ROOT_USERNAME="${DATABASE_USER_ROOT:-$INITDB_ROOT_USERNAME}"
|
INITDB_ROOT_USERNAME="${DATABASE_USER_ROOT:-$INITDB_ROOT_USERNAME}"
|
||||||
@@ -17,4 +17,4 @@ ME_CONFIG_MONGODB_AUTH_PASSWORD_FILE="${ME_CONFIG_MONGODB_AUTH_PASSWORD_FILE:-}"
|
|||||||
ME_CONFIG_MONGODB_CA_FILE="${ME_CONFIG_MONGODB_CA_FILE:-}"
|
ME_CONFIG_MONGODB_CA_FILE="${ME_CONFIG_MONGODB_CA_FILE:-}"
|
||||||
VCAP_APP_HOST="${VCAP_APP_HOST:-0.0.0.0}"
|
VCAP_APP_HOST="${VCAP_APP_HOST:-0.0.0.0}"
|
||||||
VCAP_APP_PORT="${VCAP_APP_PORT:-19054}"
|
VCAP_APP_PORT="${VCAP_APP_PORT:-19054}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# networing info
|
# networing info
|
||||||
DOMAINNAME="${DOMAINNAME:-}"
|
DOMAINNAME="${DOMAINNAME:-}"
|
||||||
EMAIL_RELAY="${EMAIL_RELAY:-}"
|
EMAIL_RELAY="${EMAIL_RELAY:-}"
|
||||||
@@ -6,4 +6,4 @@ HOSTNAME="${HOSTNAME:-casjaysdev-GEN_SCRIPT_REPLACE_APPNAME}"
|
|||||||
EMAIL_DOMAIN="${EMAIL_DOMAIN:-${DOMAINNAME:-$HOSTNAME}}"
|
EMAIL_DOMAIN="${EMAIL_DOMAIN:-${DOMAINNAME:-$HOSTNAME}}"
|
||||||
FULL_DOMAIN_NAME="${FULL_DOMAIN_NAME:-${DOMAINNAME:-$HOSTNAME}}"
|
FULL_DOMAIN_NAME="${FULL_DOMAIN_NAME:-${DOMAINNAME:-$HOSTNAME}}"
|
||||||
SERVER_ADMIN="${SERVER_ADMIN:-root@${EMAIL_DOMAIN:-$FULL_DOMAIN_NAME}}"
|
SERVER_ADMIN="${SERVER_ADMIN:-root@${EMAIL_DOMAIN:-$FULL_DOMAIN_NAME}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# other
|
# other
|
||||||
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# php settings
|
# php settings
|
||||||
PHP_VERSION="${PHP_VERSION//php/}"
|
PHP_VERSION="${PHP_VERSION//php/}"
|
||||||
PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
PHP_INI_DIR="${PHP_INI_DIR:-$(__find_php_ini)}"
|
||||||
PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
PHP_BIN_DIR="${PHP_BIN_DIR:-$(__find_php_bin)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# postgresql env
|
# postgresql env
|
||||||
PGDATA="${DATABASE_DIR_PGSQL:-$PGDATA}"
|
PGDATA="${DATABASE_DIR_PGSQL:-$PGDATA}"
|
||||||
DATABASE_DIR_PGSQL="${DATABASE_DIR_PGSQL:-/data/db/postgres}"
|
DATABASE_DIR_PGSQL="${DATABASE_DIR_PGSQL:-/data/db/postgres}"
|
||||||
POSTGRES_USER="${DATABASE_USER_ROOT:-$POSTGRES_USER}"
|
POSTGRES_USER="${DATABASE_USER_ROOT:-$POSTGRES_USER}"
|
||||||
POSTGRES_PASSWORD="${DATABASE_PASS_ROOT:-$POSTGRES_PASSWORD}"
|
POSTGRES_PASSWORD="${DATABASE_PASS_ROOT:-$POSTGRES_PASSWORD}"
|
||||||
POSTGRES_CONFIG_FILE="${POSTGRES_CONFIG_FILE:-$(__find_pgsql_conf)}"
|
POSTGRES_CONFIG_FILE="${POSTGRES_CONFIG_FILE:-$(__find_pgsql_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# redis env
|
# redis env
|
||||||
DATABASE_DIR_REDIS="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
DATABASE_DIR_REDIS="${DATABASE_DIR_REDIS:-/data/db/redis}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# services/ports
|
# services/ports
|
||||||
ENV_PORTS="${ENV_PORTS:-}"
|
ENV_PORTS="${ENV_PORTS:-}"
|
||||||
SERVICE_PORT="${SERVICE_PORT:-$PORT}"
|
SERVICE_PORT="${SERVICE_PORT:-$PORT}"
|
||||||
WEB_SERVER_PORTS="${WEB_SERVER_PORTS:-}"
|
WEB_SERVER_PORTS="${WEB_SERVER_PORTS:-}"
|
||||||
SERVICES_LIST="${PROCS_LIST:-$SERVICES_LIST} "
|
SERVICES_LIST="${PROCS_LIST:-$SERVICES_LIST} "
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# ssl server settings
|
# ssl server settings
|
||||||
SSL_ENABLED="${SSL_ENABLED:-false}"
|
SSL_ENABLED="${SSL_ENABLED:-false}"
|
||||||
SSL_DIR="${SSL_CONTAINER_DIR:-/config/ssl}"
|
SSL_DIR="${SSL_CONTAINER_DIR:-/config/ssl}"
|
||||||
@@ -6,7 +6,7 @@ SSL_DIR="${SSL_DIR:-$SSL_DIR}"
|
|||||||
SSL_CA="${SSL_CA:-$SSL_DIR/ca.crt}"
|
SSL_CA="${SSL_CA:-$SSL_DIR/ca.crt}"
|
||||||
SSL_KEY="${SSL_KEY:-$SSL_DIR/server.key}"
|
SSL_KEY="${SSL_KEY:-$SSL_DIR/server.key}"
|
||||||
SSL_CERT="${SSL_CERT:-$SSL_DIR/server.crt}"
|
SSL_CERT="${SSL_CERT:-$SSL_DIR/server.crt}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# certificate settings
|
# certificate settings
|
||||||
RSA="${RSA:-4096}"
|
RSA="${RSA:-4096}"
|
||||||
STATE="${STATE:-NY}"
|
STATE="${STATE:-NY}"
|
||||||
@@ -16,4 +16,4 @@ UNIT="${UNIT:-CasjaysDev}"
|
|||||||
ORG="${ORG:-"Casjays Developments"}"
|
ORG="${ORG:-"Casjays Developments"}"
|
||||||
DAYS_VALID="${DAYS_VALID:-3650}"
|
DAYS_VALID="${DAYS_VALID:-3650}"
|
||||||
CN="${CN:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
CN="${CN:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Supabase
|
# Supabase
|
||||||
DATABASE_DIR_SUPABASE="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
DATABASE_DIR_SUPABASE="${DATABASE_DIR_SUPABASE:-/data/db/supabase}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# web server configs
|
# web server configs
|
||||||
HTTPD_CONFIG_FILE="${HTTPD_CONFIG_FILE:-$(__find_httpd_conf)}"
|
HTTPD_CONFIG_FILE="${HTTPD_CONFIG_FILE:-$(__find_httpd_conf)}"
|
||||||
NGINX_CONFIG_FILE="${NGINX_CONFIG_FILE:-$(__find_nginx_conf)}"
|
NGINX_CONFIG_FILE="${NGINX_CONFIG_FILE:-$(__find_nginx_conf)}"
|
||||||
CADDY_CONFIG_FILE="${CHEROKEE_CONFIG_FILE:-$(__find_caddy_conf)}"
|
CADDY_CONFIG_FILE="${CHEROKEE_CONFIG_FILE:-$(__find_caddy_conf)}"
|
||||||
LIGHTTPD_CONFIG_FILE="${LIGHTTPD_CONFIG_FILE:-$(__find_lighttpd_conf)}"
|
LIGHTTPD_CONFIG_FILE="${LIGHTTPD_CONFIG_FILE:-$(__find_lighttpd_conf)}"
|
||||||
CHEROKEE_CONFIG_FILE="${CHEROKEE_CONFIG_FILE:-$(__find_cherokee_conf)}"
|
CHEROKEE_CONFIG_FILE="${CHEROKEE_CONFIG_FILE:-$(__find_cherokee_conf)}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# File locations
|
# File locations
|
||||||
ENTRYPOINT_PID_FILE="${ENTRYPOINT_PID_FILE:-/run/init.d/entrypoint.pid}"
|
ENTRYPOINT_PID_FILE="${ENTRYPOINT_PID_FILE:-/run/init.d/entrypoint.pid}"
|
||||||
ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
ENTRYPOINT_INIT_FILE="${ENTRYPOINT_INIT_FILE:-/config/.entrypoint.done}"
|
||||||
ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
ENTRYPOINT_DATA_INIT_FILE="${ENTRYPOINT_DATA_INIT_FILE:-/data/.docker_has_run}"
|
||||||
ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
ENTRYPOINT_CONFIG_INIT_FILE="${ENTRYPOINT_CONFIG_INIT_FILE:-/config/.docker_has_run}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Startup variables
|
# Startup variables
|
||||||
INIT_DATE="${INIT_DATE:-$(date)}"
|
INIT_DATE="${INIT_DATE:-$(date)}"
|
||||||
START_SERVICES="${START_SERVICES:-yes}"
|
START_SERVICES="${START_SERVICES:-yes}"
|
||||||
@@ -12,10 +12,10 @@ ENTRYPOINT_MESSAGE="${ENTRYPOINT_MESSAGE:-yes}"
|
|||||||
ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
ENTRYPOINT_FIRST_RUN="${ENTRYPOINT_FIRST_RUN:-yes}"
|
||||||
DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-false}"
|
DATA_DIR_INITIALIZED="${DATA_DIR_INITIALIZED:-false}"
|
||||||
CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-false}"
|
CONFIG_DIR_INITIALIZED="${CONFIG_DIR_INITIALIZED:-false}"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
# Check if this is a new container
|
# Check if this is a new container
|
||||||
[ -f "$ENTRYPOINT_PID_FILE" ] && START_SERVICES="no"
|
[ -f "$ENTRYPOINT_PID_FILE" ] && START_SERVICES="no"
|
||||||
[ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ] && ENTRYPOINT_FIRST_RUN="no"
|
[ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ] && ENTRYPOINT_FIRST_RUN="no"
|
||||||
[ -f "$ENTRYPOINT_DATA_INIT_FILE" ] && DATA_DIR_INITIALIZED="true"
|
[ -f "$ENTRYPOINT_DATA_INIT_FILE" ] && DATA_DIR_INITIALIZED="true"
|
||||||
[ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ] && CONFIG_DIR_INITIALIZED="true"
|
[ -f "$ENTRYPOINT_CONFIG_INIT_FILE" ] && CONFIG_DIR_INITIALIZED="true"
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|||||||
Reference in New Issue
Block a user