Add work docker image flavour

This commit is contained in:
cytopia
2018-02-23 09:04:33 +01:00
parent f9782dbab6
commit a72968ede6
12 changed files with 2491 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
# Bash Completion
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
fi
# Locale
export LC_ALL=en_US.UTF-8
# Aliases
alias ls='ls -p --color=always --group-directories-first'
alias l='ls -lp --color=always --group-directories-first'
alias ll='ls -alp --color=always --group-directories-first'
alias ..='cd ..'
# Nice PS1
PS1="\[\e[0;31m\]$(whoami)\[\e[0m\]@\[\e[0;36m\]php-$(php -v|head -1|grep -Eo '[0-9.]+'|head -1)\[\e[0m\] in \[\e[0;34m\]\w \[\e[0m\]\$ "
# Show Intro
echo
echo "--------------------------------------------------------------------------------"
echo " _ _ _ _ "
echo " | | (_) | | "
echo " __| | _____ ___| | |__ _____ __"
echo " / _\` |/ _ \\ \\ / / | | '_ \\ / _ \\ \\/ /"
echo " | (_| | __/\\ V /| | | |_) | (_) > < "
echo " \\__,_|\\___| \\_/ |_|_|_.__/ \\___/_/\\_\\"
echo " "
echo " http://devilbox.org"
echo
echo
echo " | Available Tools | Project website |"
echo " |------------------|------------------------------|"
echo " | awesome-ci | gh: cytopia/awesome-ci |"
echo " | composer | https://getcomposer.org |"
echo " | druapl-console | https://drupalconsole.com |"
echo " | drush | http://www.drush.org |"
echo " | eslint | https://eslint.org |"
echo " | git | https://git-scm.com |"
echo " | laravel | gh: laravel/installer |"
echo " | linuxbrew | http://linuxbrew.sh |"
echo " | mysqldump-secure | https://mysqldump-secure.org |"
echo " | node | https://nodejs.org |"
echo " | npm | https://www.npmjs.com |"
echo " | phalcon-devtools | gh: phalcon/phalcon-devtools |"
echo " | symfony installer| gh: symfony/symfony-installer|"
echo " | webpack | ghL webpack/webpack |"
echo " | wpcli | https://wp-cli.org |"
echo
echo
echo " | Available Dirs | Description |"
echo " |------------------|------------------------------|"
echo " | /shared/httpd | Project base directory |"
echo " | /shared/backups | Backup directory |"
echo " | /var/mail | Email directory |"
echo " | /var/log | Log file directory |"
echo
echo "--------------------------------------------------------------------------------"
echo

View File

@@ -0,0 +1,83 @@
#!/bin/sh
#
# Available global variables:
# + MY_USER
# + MY_GROUP
# + DEBUG_LEVEL
set -e
set -u
############################################################
# Functions
############################################################
###
### Setup Postfix for catch-all
###
fix_mds_permissions() {
mds_cfg=/etc/mysqldump-secure.conf
mds_cnf=/etc/mysqldump-secure.cnf
mds_log=/var/log/mysqldump-secure.log
mds_dir=/shared/backups/mysql
if [ ! -d "${mds_dir}" ]; then
run "mkdir -p ${mds_dir}"
fi
run "chown ${MY_USER}:${MY_GROUP} ${mds_cfg}"
run "chown ${MY_USER}:${MY_GROUP} ${mds_cnf}"
run "chown ${MY_USER}:${MY_GROUP} ${mds_log}"
run "chown ${MY_USER}:${MY_GROUP} ${mds_dir}"
unset -v mds_cfg
unset -v mds_cnf
unset -v mds_log
unset -v mds_dir
}
set_mds_settings() {
mds_user_var="${1}"
mds_pass_var="${2}"
mds_host_var="${3}"
mds_cnf=/etc/mysqldump-secure.cnf
# MySQL user
if ! env_set "${mds_user_var}"; then
log "info" "\$${mds_user_var} not set for mysqldump-secure. Keeping default user."
else
mds_user_val="$( env_get "${mds_user_var}" )"
log "info" "\$${mds_user_var} set for mysqldump-secure. Changing to '${mds_user_val}'"
run "sed -i'' 's/^user.*/user = ${mds_user_val}/g' ${mds_cnf}"
fi
# MySQL pass
if ! env_set "${mds_pass_var}"; then
log "info" "\$${mds_pass_var} not set for mysqldump-secure. Keeping default password."
else
mds_pass_val="$( env_get "${mds_pass_var}" )"
log "info" "\$${mds_pass_var} set for mysqldump-secure. Changing to '******'"
run "sed -i'' 's/^password.*/password = ${mds_pass_val}/g' ${mds_cnf}"
fi
# MySQL host
if ! env_set "${mds_host_var}"; then
log "info" "\$${mds_host_var} not set for mysqldump-secure. Keeping default host."
else
mds_host_val="$( env_get "${mds_host_var}" )"
log "info" "\$${mds_host_var} set for mysqldump-secure. Changing to '${mds_host_val}'"
run "sed -i'' 's/^host.*/host = ${mds_host_val}/g' ${mds_cnf}"
fi
unset -v mds_user_var
unset -v mds_pass_var
unset -v mds_host_var
unset -v mds_user_val
unset -v mds_pass_val
unset -v mds_host_val
unset -v mds_cnf
}

View File

@@ -0,0 +1,139 @@
#!/bin/sh
#
# Available global variables:
# + MY_USER
# + MY_GROUP
set -e
set -u
###
### Variables
###
PHP_INI_PATH="/usr/local/etc/php.ini"
FPM_ERROR_LOG_CFG="/usr/local/etc/php-fpm.conf"
FPM_ACCESS_LOG_CFG="/usr/local/etc/php-fpm.d/zzz-docker.conf"
FPM_LOG_DIR="/var/log/php"
#PHP_CUST_MODULE_DIR="/etc/php-modules.d"
PHP_CUST_INI_DIR="/etc/php-custom.d"
PHP_REAL_INI_DIR="/usr/local/etc/php.d"
SUPERVISOR_CONFD="/etc/supervisor/conf.d"
###
### Source libs
###
init="$( find /docker-entrypoint.d -name '*.sh' -type f | sort -u )"
for f in ${init}; do
# shellcheck disable=SC1090
. "${f}"
done
###
### Set Debug level
###
DEBUG_LEVEL="$( get_debug_level "DEBUG_ENTRYPOINT" "0" )"
log "info" "Debug level: ${DEBUG_LEVEL}" "${DEBUG_LEVEL}"
#############################################################
## Sanity checks
#############################################################
if ! command -v socat >/dev/null 2>&1; then
log "err" "socat not found, but required." "${DEBUG_LEVEL}"
exit 1
fi
#############################################################
## Entry Point
#############################################################
###
### Change uid/gid
###
set_uid "NEW_UID"
set_gid "NEW_GID"
###
### Set timezone
###
set_timezone "TIMEZONE" "${PHP_INI_PATH}"
###
### Set Logging
###
set_docker_logs \
"DOCKER_LOGS" \
"${FPM_LOG_DIR}" \
"${FPM_ERROR_LOG_CFG}" \
"${FPM_ACCESS_LOG_CFG}"
###
### Setup postfix
###
set_postfix "ENABLE_MAIL"
###
### Validate socat port forwards
###
if ! port_forward_validate "FORWARD_PORTS_TO_LOCALHOST"; then
exit 1
fi
###
### Supervisor: socat
###
for line in $( port_forward_get_lines "FORWARD_PORTS_TO_LOCALHOST" ); do
lport="$( port_forward_get_lport "${line}" )"
rhost="$( port_forward_get_rhost "${line}" )"
rport="$( port_forward_get_rport "${line}" )"
supervisor_add_service "socat-${lport}-${rhost}-${rport}" "/usr/bin/socat tcp-listen:${lport},reuseaddr,fork tcp:${rhost}:${rport}" "${SUPERVISOR_CONFD}"
done
###
### Supervisor: rsyslogd & postfix
###
if [ "$( env_get "ENABLE_MAIL" )" = "1" ]; then
supervisor_add_service "rsyslogd" "/usr/sbin/rsyslogd -n" "${SUPERVISOR_CONFD}" "1"
supervisor_add_service "postfix" "/usr/local/sbin/postfix.sh" "${SUPERVISOR_CONFD}"
fi
###
### Supervisor: php-fpm
###
supervisor_add_service "php-fpm" "/usr/local/sbin/php-fpm" "${SUPERVISOR_CONFD}"
###
### Copy custom *.ini files
###
copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_REAL_INI_DIR}"
###
### mysqldump-secure
###
fix_mds_permissions
set_mds_settings "MYSQL_BACKUP_USER" "MYSQL_BACKUP_PASS" "MYSQL_BACKUP_HOST"
###
### Start
###
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

View File

@@ -0,0 +1,7 @@
# Keep PATH for all sudo commands
Defaults env_keep += "PATH"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/local/node/bin
# Allow devilbox user to do anything without password
%devilbox ALL=(ALL) NOPASSWD: ALL