Skip to content
Snippets Groups Projects
Commit 26ec9275 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

Merge branch '1.24' into 'master'

fix menu with started database less app; apply template permissions on target...

See merge request !24
parents 2fdb5055 41c28edc
No related branches found
No related tags found
1 merge request!24fix menu with started database less app; apply template permissions on target...
...@@ -28,20 +28,21 @@ ...@@ -28,20 +28,21 @@
# 2024-10-25 v1.21 <axel.hahn@unibe.ch> create missing subdir dbdumps # 2024-10-25 v1.21 <axel.hahn@unibe.ch> create missing subdir dbdumps
# 2024-10-30 v1.22 <axel.hahn@unibe.ch> added: Open Mysql client in container # 2024-10-30 v1.22 <axel.hahn@unibe.ch> added: Open Mysql client in container
# 2024-10-30 v1.23 <axel.hahn@unibe.ch> added: show menu hints why some menu items are visible # 2024-10-30 v1.23 <axel.hahn@unibe.ch> added: show menu hints why some menu items are visible
# 2024-11-20 v1.24 <axel.hahn@unibe.ch> fix menu with started database less app; apply template permissions on target file; add $WEBURL; remove $frontendurl
# ====================================================================== # ======================================================================
cd "$( dirname "$0" )" || exit 1 cd "$( dirname "$0" )" || exit 1
# init used vars # init used vars
gittarget= gittarget=
frontendurl= WEBURL=
_self=$( basename "$0" ) _self=$( basename "$0" )
# shellcheck source=/dev/null # shellcheck source=/dev/null
. "${_self}.cfg" || exit 1 . "${_self}.cfg" || exit 1
_version="1.23" _version="1.24"
# git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git # git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git
selfgitrepo="docker-php-starterkit.git" selfgitrepo="docker-php-starterkit.git"
...@@ -65,6 +66,7 @@ DC_REPO=1 ...@@ -65,6 +66,7 @@ DC_REPO=1
DC_CONFIG_CHANGED=0 DC_CONFIG_CHANGED=0
# absolute urls for web app
DC_WEB_URL="" DC_WEB_URL=""
DC_DUMP_DIR=dbdumps DC_DUMP_DIR=dbdumps
...@@ -77,6 +79,19 @@ ps -ef | grep dockerd-rootless | grep -q $USER && isDockerRootless=1 ...@@ -77,6 +79,19 @@ ps -ef | grep dockerd-rootless | grep -q $USER && isDockerRootless=1
# FUNCTIONS # FUNCTIONS
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# check config for changes in newer versions
function _checkConfig(){
# --- v1.24
if [ -z "$WEBURL" ]; then
echo -e "${fgBrown}INFO: add 'WEBURL=\"/\"' in your ${_self}.cfg. It is a new var since v1.24"
WEBURL="/"
fi
if [ -n "$frontendurl" ]; then
echo "INFO: Remove frontendurl=$frontendurl in your ${_self}.cfg. It is obsolete since v1.24"
fi
}
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# STATUS FUNCTIONS # STATUS FUNCTIONS
...@@ -118,10 +133,14 @@ function _getStatus_docker(){ ...@@ -118,10 +133,14 @@ function _getStatus_docker(){
# Get web url of the application # Get web url of the application
# It is for support of Nginx Docker Proxy # It is for support of Nginx Docker Proxy
# https://github.com/axelhahn/nginx-docker-proxy # https://github.com/axelhahn/nginx-docker-proxy
# It returns http://localhost:<port> or a https://<appname> # It returns http://localhost:<port> or a https://<appname> plus $WEBURL
function _getWebUrl(){ function _getWebUrl(){
DC_WEB_URL="$frontendurl" if grep -q "^[0-9\.]* ${APP_NAME}-server" /etc/hosts; then
grep -q "${APP_NAME}-server" /etc/hosts && DC_WEB_URL="https://${APP_NAME}-server/" DC_WEB_URL="https://${APP_NAME}-server$WEBURL"
else
DC_WEB_URL=http://localhost:${APP_PORT}$WEBURL
fi
set +vx
} }
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -141,7 +160,7 @@ function h3(){ ...@@ -141,7 +160,7 @@ function h3(){
# helper for menu: print an inverted key # helper for menu: print an inverted key
function _key(){ function _key(){
echo -en "\e[4;7m ${1} \e[0m" echo -en "$fgInvert ${1} $fgReset"
} }
# helper for menu: show hint text # helper for menu: show hint text
...@@ -170,7 +189,7 @@ function showMenu(){ ...@@ -170,7 +189,7 @@ function showMenu(){
fi fi
if [ $isDockerRootless -eq 1 ] || [ $_bAll -eq 1 ]; then if [ $isDockerRootless -eq 1 ] || [ $_bAll -eq 1 ]; then
menuhint $_bAll "Beause rootless docker was found" menuhint $_bAll "Because rootless docker was found"
echo "${_spacer}$( _key i ) - init application: set permissions" echo "${_spacer}$( _key i ) - init application: set permissions"
echo echo
fi fi
...@@ -185,7 +204,10 @@ function showMenu(){ ...@@ -185,7 +204,10 @@ function showMenu(){
echo "${_spacer}$( _key T ) - remove generated files" echo "${_spacer}$( _key T ) - remove generated files"
echo echo
fi fi
if [ $DC_WEB_UP -eq 0 ] || [ $DC_DB_UP -eq 0 ] || [ $_bAll -eq 1 ]; then if [ $DC_WEB_UP -eq 0 ] \
|| [ $DC_DB_UP -eq 0 ] && [ ! "$DB_ADD" = "false" ] \
|| [ $_bAll -eq 1 \
]; then
if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then
menuhint $_bAll "A container is down and config is unchanged" menuhint $_bAll "A container is down and config is unchanged"
echo "${_spacer}$( _key u ) - startup containers docker-compose ... up -d" echo "${_spacer}$( _key u ) - startup containers docker-compose ... up -d"
...@@ -196,7 +218,7 @@ function showMenu(){ ...@@ -196,7 +218,7 @@ function showMenu(){
fi fi
fi fi
if [ $DC_WEB_UP -eq 1 ] || [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then if [ $DC_WEB_UP -eq 1 ] || [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
menuhint $_bAll "${_spacer}A container is up" menuhint $_bAll "A container is up"
echo "${_spacer}$( _key s ) - shutdown containers docker-compose stop" echo "${_spacer}$( _key s ) - shutdown containers docker-compose stop"
echo echo
echo "${_spacer}$( _key m ) - more infos" echo "${_spacer}$( _key m ) - more infos"
...@@ -362,7 +384,7 @@ function _fix_no-db(){ ...@@ -362,7 +384,7 @@ function _fix_no-db(){
local iStart; typeset -i iStart local iStart; typeset -i iStart
iStart=$( grep -Fn "$CUTTER_NO_DATABASE" "${_file}" | cut -f 1 -d ':' )-1 iStart=$( grep -Fn "$CUTTER_NO_DATABASE" "${_file}" | cut -f 1 -d ':' )-1
if [ $iStart -gt 0 ]; then if [ $iStart -gt 0 ]; then
sed -ni "1,${iStart}p" "${_file}" sed -n "$sed_no_backup" "1,${iStart}p" "${_file}"
fi fi
fi fi
} }
...@@ -424,14 +446,15 @@ function _generateFiles(){ ...@@ -424,14 +446,15 @@ function _generateFiles(){
# write file from line 2 to a tmp file # write file from line 2 to a tmp file
sed -n '2,$p' "$mytpl" >"$_tmpfile" sed -n '2,$p' "$mytpl" >"$_tmpfile"
chmod "$( stat -c %a "$mytpl" )" "$_tmpfile"
# add generator # add generator
# sed -i "s#{{generator}}#generated by $0 - template: $mytpl - $( date )#g" $_tmpfile # sed -i "s#{{generator}}#generated by $0 - template: $mytpl - $( date )#g" $_tmpfile
local _md5; _md5=$( md5sum $_tmpfile | awk '{ print $1 }' ) local _md5; _md5=$( md5sum $_tmpfile | awk '{ print $1 }' )
sed -i "s#{{generator}}#GENERATED BY $_self - template: $mytpl - $_md5#g" $_tmpfile sed -i "$sed_no_backup" "s#{{generator}}#GENERATED BY $_self - template: $mytpl - $_md5#g" $_tmpfile
# apply all replacements to the tmp file # apply all replacements to the tmp file
eval sed -i "$params" "$_tmpfile" || exit eval sed "$sed_no_backup" "$params" "$_tmpfile" || exit
_fix_no-db $_tmpfile _fix_no-db $_tmpfile
...@@ -444,7 +467,7 @@ function _generateFiles(){ ...@@ -444,7 +467,7 @@ function _generateFiles(){
echo -n "$mytpl - changes detected - writing [$target] ... " echo -n "$mytpl - changes detected - writing [$target] ... "
mkdir -p "$( dirname ../"$target" )" || exit 2 mkdir -p "$( dirname ../"$target" )" || exit 2
mv "$_tmpfile" "../$target" || exit 2 mv "$_tmpfile" "../$target" || exit 2
echo OK echo -e "${fgGreen}OK${fgReset}"
echo echo
fi fi
else else
...@@ -473,7 +496,7 @@ function _removeGeneratedFiles(){ ...@@ -473,7 +496,7 @@ function _removeGeneratedFiles(){
echo -n "REMOVING " echo -n "REMOVING "
ls -l "../$target" || exit 2 ls -l "../$target" || exit 2
rm -f "../$target" || exit 2 rm -f "../$target" || exit 2
echo OK echo -e "${fgGreen}OK${fgReset}"
else else
echo "SKIP: $target" echo "SKIP: $target"
fi fi
...@@ -608,7 +631,10 @@ function _dbImport(){ ...@@ -608,7 +631,10 @@ function _dbImport(){
fi fi
echo -n "Importing $dumpfile ... " echo -n "Importing $dumpfile ... "
if zcat "$dumpfile" | docker exec -i "${APP_NAME}-db" mysql -uroot -p${MYSQL_ROOT_PASS} "${MYSQL_DB}"
# Mac OS compatibility
# if zcat "$dumpfile" | docker exec -i "${APP_NAME}-db" mysql -uroot -p${MYSQL_ROOT_PASS} "${MYSQL_DB}"
if cat "$dumpfile" | zcat | docker exec -i "${APP_NAME}-db" mysql -uroot -p${MYSQL_ROOT_PASS} "${MYSQL_DB}"
then then
echo "OK" echo "OK"
else else
...@@ -620,6 +646,18 @@ function _dbImport(){ ...@@ -620,6 +646,18 @@ function _dbImport(){
# MAIN # MAIN
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
_checkConfig
# Mac OS compatibility
case "$OSTYPE" in
darwin*|bsd*)
sed_no_backup=" -i '' "
;;
*)
sed_no_backup="-i"
;;
esac
action=$1; shift 1 action=$1; shift 1
while true; do while true; do
......
...@@ -70,8 +70,10 @@ DOCKER_USER_UID=33 ...@@ -70,8 +70,10 @@ DOCKER_USER_UID=33
# document root inside web-server container # document root inside web-server container
WEBROOT=/var/www/${APP_NAME}/public_html WEBROOT=/var/www/${APP_NAME}/public_html
# path of web url to open
WEBURL=/
CUTTER_NO_DATABASE="CUT-HERE-FOR-NO-DATABASE" CUTTER_NO_DATABASE="CUT-HERE-FOR-NO-DATABASE"
frontendurl=http://localhost:${APP_PORT}/
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -106,9 +106,11 @@ DOCKER_USER_UID=33 ...@@ -106,9 +106,11 @@ DOCKER_USER_UID=33
# document root inside web-server container # document root inside web-server container
WEBROOT=/var/www/${APP_NAME}/public_html WEBROOT=/var/www/${APP_NAME}/public_html
# path of web url to open
WEBURL=/
CUTTER_NO_DATABASE="CUT-HERE-FOR-NO-DATABASE" CUTTER_NO_DATABASE="CUT-HERE-FOR-NO-DATABASE"
frontendurl=http://localhost:${APP_PORT}/
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
``` ```
...@@ -139,4 +141,5 @@ MYSQL_RANDOM_ROOT_PASSWORD | string | 0 ...@@ -139,4 +141,5 @@ MYSQL_RANDOM_ROOT_PASSWORD | string | 0
MYSQL_ROOT_PASS | string | 12345678 MYSQL_ROOT_PASS | string | 12345678
MYSQL_USER | string | ${APP_NAME} MYSQL_USER | string | ${APP_NAME}
WEBROOT | string | webroot directory inside apache container; default: /var/www/${APP_NAME}/public_html WEBROOT | string | webroot directory inside apache container; default: /var/www/${APP_NAME}/public_html
WEBURL | string | path of web url to open; default: /
WRITABLEDIR | string | local webroot directory; default: ../public_html WRITABLEDIR | string | local webroot directory; default: ../public_html
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment