Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
docker-php-starterkit
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IML Open Source
docker-php-starterkit
Commits
b4cf1cb6
Commit
b4cf1cb6
authored
11 months ago
by
Hahn Axel (hahn)
Browse files
Options
Downloads
Patches
Plain Diff
v1.12 apply shell fixes
parent
2cbf38f1
No related branches found
No related tags found
1 merge request
!11
Shellfixes
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
docker/init.sh
+84
-72
84 additions, 72 deletions
docker/init.sh
with
84 additions
and
72 deletions
docker/init.sh
+
84
−
72
View file @
b4cf1cb6
...
@@ -16,15 +16,24 @@
...
@@ -16,15 +16,24 @@
# 2023-11-15 v1.9 <axel.hahn@unibe.ch> add help; execute multiple actions by params; new menu item: open app
# 2023-11-15 v1.9 <axel.hahn@unibe.ch> add help; execute multiple actions by params; new menu item: open app
# 2023-12-07 v1.10 <www.axel-hahn.de> simplyfy console command; add php linter
# 2023-12-07 v1.10 <www.axel-hahn.de> simplyfy console command; add php linter
# 2024-07-01 v1.11 <www.axel-hahn.de> diff with colored output; suppress errors on port check
# 2024-07-01 v1.11 <www.axel-hahn.de> diff with colored output; suppress errors on port check
# 2024-07-19 v1.12 <axel.hahn@unibe.ch> apply shell fixes
# ======================================================================
# ======================================================================
cd
$(
dirname
$0
)
cd
"
$(
dirname
"
$0
"
)
"
||
exit
1
.
$(
basename
$0
)
.cfg
# init used vars
gittarget
=
frontendurl
=
_self
=
$(
basename
"
$0
"
)
# shellcheck source=/dev/null
.
"
${
_self
}
.cfg"
||
exit
1
# 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"
_version
=
"1.1
1
"
_version
=
"1.1
2
"
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# FUNCTIONS
# FUNCTIONS
...
@@ -44,26 +53,28 @@ function h3(){
...
@@ -44,26 +53,28 @@ function h3(){
# show help for param -h
# show help for param -h
function
showMenu
(){
function
showMenu
(){
echo
"
$(
_key g
)
- remove git data of starterkit"
cat
<<
EOM
echo
echo
"
$(
_key i
)
- init application: set permissions"
$(
_key g
)
- remove git data of starterkit
echo
"
$(
_key t
)
- generate files from templates"
echo
"
$(
_key T
)
- remove generated files"
$(
_key i
)
- init application: set permissions
echo
$(
_key t
)
- generate files from templates
echo
"
$(
_key u
)
- startup containers docker-compose ... up -d"
$(
_key T
)
- remove generated files
echo
"
$(
_key U
)
- startup containers docker-compose ... up -d --build"
echo
"
$(
_key s
)
- shutdown containers docker-compose stop"
$(
_key u
)
- startup containers docker-compose ... up -d
echo
"
$(
_key r
)
- remove containers docker-compose rm -f"
$(
_key U
)
- startup containers docker-compose ... up -d --build
echo
$(
_key s
)
- shutdown containers docker-compose stop
echo
"
$(
_key m
)
- more infos"
$(
_key r
)
- remove containers docker-compose rm -f
echo
"
$(
_key o
)
- open app [
${
APP_NAME
}
]
$frontendurl
"
echo
"
$(
_key c
)
- console (bash)"
$(
_key m
)
- more infos
echo
"
$(
_key p
)
- console check with php linter"
$(
_key o
)
- open app [
${
APP_NAME
}
]
$frontendurl
echo
$(
_key c
)
- console (bash)
echo
"
$(
_key q
)
- quit"
$(
_key p
)
- console check with php linter
$(
_key q
)
- quit
EOM
}
}
function
showHelp
(){
function
showHelp
(){
local
_self
=
$(
basename
"
$0
"
)
cat
<<
EOH
cat
<<
EOH
INITIALIZER FOR DOCKER APP v
$_version
INITIALIZER FOR DOCKER APP v
$_version
...
@@ -99,20 +110,16 @@ EXAMPLES:
...
@@ -99,20 +110,16 @@ EXAMPLES:
EOH
EOH
}
}
# function _gitinstall(){
# h2 "install/ update app from git repo ${gitrepo} in ${gittarget} ..."
# test -d ${gittarget} && ( cd ${gittarget} && git pull )
# test -d ${gittarget} || git clone -b ${gitbranch} ${gitrepo} ${gittarget}
# }
# set acl on local directory
# set acl on local directory
function
_setWritepermissions
(){
function
_setWritepermissions
(){
h2
"set write permissions on
${
gittarget
}
..."
h2
"set write permissions on
${
gittarget
}
..."
local
_user
=
$(
id
-gn
)
local
_user
;
_user
=
$(
id
-gn
)
typeset
-i
local
_user_uid
=
0
local
_user_uid
;
typeset
-i
_user_uid
=
0
test
-f
/etc/subuid
&&
_user_uid
=
$(
grep
$_user
/etc/subuid 2>/dev/null |
cut
-f
2
-d
':'
)
-1
typeset
-i
local
DOCKER_USER_OUTSIDE
=
$_user_uid
+
$DOCKER_USER_UID
test
-f
/etc/subuid
&&
_user_uid
=
$(
grep
"
$_user
"
/etc/subuid 2>/dev/null |
cut
-f
2
-d
':'
)
-1
local
DOCKER_USER_OUTSIDE
;
typeset
-i
DOCKER_USER_OUTSIDE
=
$_user_uid
+
$DOCKER_USER_UID
set
-vx
set
-vx
...
@@ -124,10 +131,10 @@ function _setWritepermissions(){
...
@@ -124,10 +131,10 @@ function _setWritepermissions(){
sudo
setfacl
-bR
"
${
mywritedir
}
"
sudo
setfacl
-bR
"
${
mywritedir
}
"
# default permissions: both the host user and the user with UID 33 (www-data on many systems) are owners with rwx perms
# default permissions: both the host user and the user with UID 33 (www-data on many systems) are owners with rwx perms
sudo
setfacl
-dRm
u:
${
DOCKER_USER_OUTSIDE
}
:rwx,
${
_user
}
:rwx
"
${
mywritedir
}
"
sudo
setfacl
-dRm
"
u:
${
DOCKER_USER_OUTSIDE
}
:rwx,
${
_user
}
:rwx
"
"
${
mywritedir
}
"
# permissions: make both the host user and the user with UID 33 owner with rwx perms for all existing files/directories
# permissions: make both the host user and the user with UID 33 owner with rwx perms for all existing files/directories
sudo
setfacl
-Rm
u:
${
DOCKER_USER_OUTSIDE
}
:rwx,
${
_user
}
:rwx
"
${
mywritedir
}
"
sudo
setfacl
-Rm
"
u:
${
DOCKER_USER_OUTSIDE
}
:rwx,
${
_user
}
:rwx
"
"
${
mywritedir
}
"
done
done
set
+vx
set
+vx
...
@@ -138,11 +145,10 @@ function _removeGitdata(){
...
@@ -138,11 +145,10 @@ function _removeGitdata(){
h2
"Remove git data of starterkit"
h2
"Remove git data of starterkit"
echo
-n
"Current git remote url: "
echo
-n
"Current git remote url: "
git config
--get
remote.origin.url
git config
--get
remote.origin.url
git config
--get
remote.origin.url 2>/dev/null |
grep
$selfgitrepo
>
/dev/null
if
git config
--get
remote.origin.url 2>/dev/null |
grep
$selfgitrepo
>
/dev/null
;
then
if
[
$?
-eq
0
]
;
then
echo
echo
echo
-n
"Delete local .git and .gitignore? [y/N] > "
echo
-n
"Delete local .git and .gitignore? [y/N] > "
read
answer
read
-r
answer
test
"
$answer
"
=
"y"
&&
(
echo
"Deleting ... "
&&
rm
-rf
../.git ../.gitignore
)
test
"
$answer
"
=
"y"
&&
(
echo
"Deleting ... "
&&
rm
-rf
../.git ../.gitignore
)
else
else
echo
"It was done already -
$selfgitrepo
was not found."
echo
"It was done already -
$selfgitrepo
was not found."
...
@@ -154,10 +160,11 @@ function _removeGitdata(){
...
@@ -154,10 +160,11 @@ function _removeGitdata(){
# see _generateFiles()
# see _generateFiles()
function
_fix_no-db
(){
function
_fix_no-db
(){
local
_file
=
$1
local
_file
=
$1
if
[
$DB_ADD
=
false
]
;
then
if
[
"
$DB_ADD
"
=
"false"
]
;
then
typeset
-i
local
iStart
=
$(
cat
${
_file
}
|
grep
-Fn
"
$CUTTER_NO_DATABASE
"
|
cut
-f
1
-d
':'
)
-1
local
iStart
;
typeset
-i
iStart
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
-ni
"1,
${
iStart
}
p"
"
${
_file
}
"
fi
fi
fi
fi
}
}
...
@@ -170,20 +177,22 @@ function _fix_no-db(){
...
@@ -170,20 +177,22 @@ function _fix_no-db(){
function
_generateFiles
(){
function
_generateFiles
(){
# re-read config vars
# re-read config vars
.
$(
basename
$0
)
.cfg
# shellcheck source=/dev/null
.
"
${
_self
}
.cfg"
||
exit
1
local
_tmpfile
=
/tmp/newfilecontent
$$
.tmp
local
_tmpfile
=
/tmp/newfilecontent
$$
.tmp
h2
"generate files from templates..."
h2
"generate files from templates..."
for
mytpl
in
$(
ls
-1
./
templates/
*
)
for
mytpl
in
templates/
*
do
do
# h3 $mytpl
# h3 $mytpl
local
_doReplace
=
1
local
_doReplace
=
1
# fetch traget file from first line
# fetch traget file from first line
target
=
$(
head
-1
$mytpl
|
grep
"^# TARGET:"
|
cut
-f
2-
-d
":"
|
awk
'{ print $1 }'
)
target
=
$(
head
-1
"
$mytpl
"
|
grep
"^# TARGET:"
|
cut
-f
2-
-d
":"
|
awk
'{ print $1 }'
)
if
[
-z
"
$target
"
]
;
then
if
[
-z
"
$target
"
]
;
then
echo
SKIP:
$mytpl
- target was not found
in
1st line
echo
"
SKIP:
$mytpl
- target was not found in 1st line
"
_doReplace
=
0
_doReplace
=
0
fi
fi
...
@@ -191,31 +200,33 @@ function _generateFiles(){
...
@@ -191,31 +200,33 @@ function _generateFiles(){
if
[
$_doReplace
-eq
1
]
;
then
if
[
$_doReplace
-eq
1
]
;
then
# 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
"
# 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
=
$(
md5sum
$_tmpfile
|
awk
'{ print $1 }'
)
local
_md5
;
_md5
=
$(
md5sum
$_tmpfile
|
awk
'{ print $1 }'
)
sed
-i
"s#{{generator}}#GENERATED BY
$
(
basename
$0
)
- template:
$mytpl
-
$_md5
#g"
$_tmpfile
sed
-i
"s#{{generator}}#GENERATED BY
$
_self
- template:
$mytpl
-
$_md5
#g"
$_tmpfile
# loop over vars to make the replacement
# loop over vars to make the replacement
grep
"^[a-zA-Z]"
$(
basename
$0
)
.cfg |
while
read
line
grep
"^[a-zA-Z]"
"
$_self
.cfg
"
|
while
read
-r
line
do
do
# echo replacement: $line
# echo replacement: $line
mykey
=
$(
echo
$line
|
cut
-f
1
-d
'='
)
mykey
=
$(
echo
"
$line
"
|
cut
-f
1
-d
'='
)
myvalue
=
"
$(
eval echo
\"\$
{
$mykey
}
\"
)
"
myvalue
=
"
$(
eval echo
\"\$
"
$mykey
"
\"
)
"
# grep "{{$mykey}}" $_tmpfile
if
grep
"{{
$mykey
}}"
$_tmpfile
>
/dev/null
;
then
# TODO: multiline values fail here in replacement with sed
# TODO: multiline values fail here in replacement with sed
sed
-i
"s#{{
$mykey
}}#
${
myvalue
}
#g"
$_tmpfile
sed
-i
-e
"s#{{
$mykey
}}#
${
myvalue
}
#g"
$_tmpfile
fi
done
done
_fix_no-db
$_tmpfile
_fix_no-db
$_tmpfile
# echo "changes for $target:"
# echo "changes for $target:"
diff
--color
=
always
"../
$target
"
"
$_tmpfile
"
|
grep
-v
"
$_md5
"
|
grep
-v
"^---"
|
grep
.
if
diff
--color
=
always
"../
$target
"
"
$_tmpfile
"
|
grep
-v
"
$_md5
"
|
grep
-v
"^---"
|
grep
.
||
[
!
-f
"../
$target
"
]
;
then
if
[
$?
-eq
0
-o
!
-f
"../
$target
"
]
;
then
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
OK
else
else
...
@@ -232,20 +243,20 @@ function _generateFiles(){
...
@@ -232,20 +243,20 @@ function _generateFiles(){
# a traget file.
# a traget file.
function
_removeGeneratedFiles
(){
function
_removeGeneratedFiles
(){
h2
"remove generated files..."
h2
"remove generated files..."
for
mytpl
in
$(
ls
-1
./
templates/
*
)
for
mytpl
in
templates/
*
do
do
h3
$mytpl
h3
"
$mytpl
"
# fetch traget file from first line
# fetch traget file from first line
target
=
$(
head
-1
$mytpl
|
grep
"^# TARGET:"
|
cut
-f
2-
-d
":"
|
awk
'{ print $1 }'
)
target
=
$(
head
-1
"
$mytpl
"
|
grep
"^# TARGET:"
|
cut
-f
2-
-d
":"
|
awk
'{ print $1 }'
)
if
[
!
-z
"
$target
"
-a
-f
"../
$target
"
]
;
then
if
[
-n
"
$target
"
]
&&
[
-f
"../
$target
"
]
;
then
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
OK
else
else
echo
SKIP:
$target
echo
"
SKIP:
$target
"
fi
fi
done
done
...
@@ -258,7 +269,7 @@ function _showContainers(){
...
@@ -258,7 +269,7 @@ function _showContainers(){
if
[
-z
"
$bLong
"
]
;
then
if
[
-z
"
$bLong
"
]
;
then
docker-compose
-p
"
$APP_NAME
"
ps
docker-compose
-p
"
$APP_NAME
"
ps
else
else
docker ps |
grep
$APP_NAME
docker ps |
grep
"
$APP_NAME
"
fi
fi
}
}
...
@@ -281,7 +292,7 @@ function _showInfos(){
...
@@ -281,7 +292,7 @@ function _showInfos(){
docker-compose top
docker-compose top
h3
"Check app port"
h3
"Check app port"
if
echo
>
/dev/tcp/localhost/
${
APP_PORT
}
;
then
if
echo
>
"
/dev/tcp/localhost/
${
APP_PORT
}
"
;
then
echo
"OK, app port
${
APP_PORT
}
is reachable"
echo
"OK, app port
${
APP_PORT
}
is reachable"
echo
echo
_showBrowserurl
_showBrowserurl
...
@@ -291,7 +302,7 @@ function _showInfos(){
...
@@ -291,7 +302,7 @@ function _showInfos(){
if
[
"
$DB_ADD
"
!=
"false"
]
;
then
if
[
"
$DB_ADD
"
!=
"false"
]
;
then
h3
"Check database port"
h3
"Check database port"
if
echo
>
/dev/tcp/localhost/
${
DB_PORT
}
;
then
if
echo
>
"
/dev/tcp/localhost/
${
DB_PORT
}
"
;
then
echo
"OK, db port
${
DB_PORT
}
is reachable"
echo
"OK, db port
${
DB_PORT
}
is reachable"
echo
echo
echo
"In a local DB admin tool you can connect it:"
echo
"In a local DB admin tool you can connect it:"
...
@@ -309,7 +320,7 @@ function _showInfos(){
...
@@ -309,7 +320,7 @@ function _showInfos(){
# helper for menu: print an inverted key
# helper for menu: print an inverted key
function
_key
(){
function
_key
(){
printf
"
\e
[4;7m
${
1
}
\e
[0m"
echo
-en
"
\e
[4;7m
${
1
}
\e
[0m"
}
}
# helper: wait for a return key
# helper: wait for a return key
...
@@ -343,7 +354,7 @@ while true; do
...
@@ -343,7 +354,7 @@ while true; do
case
"
$action
"
in
case
"
$action
"
in
"-h"
)
showHelp
;
exit
0
;;
"-h"
)
showHelp
;
exit
0
;;
"-v"
)
echo
$(
basename
$0
)
$_version
;
exit
0
;;
"-v"
)
echo
"
$_self
$_version
"
;
exit
0
;;
g
)
g
)
_removeGitdata
_removeGitdata
;;
;;
...
@@ -364,7 +375,7 @@ while true; do
...
@@ -364,7 +375,7 @@ while true; do
;;
;;
u|U
)
u|U
)
h2
"Bring up..."
h2
"Bring up..."
dockerUp
=
"docker-compose -p
"
$APP_NAME
"
--verbose up -d --remove-orphans"
dockerUp
=
"docker-compose -p
$APP_NAME
--verbose up -d --remove-orphans"
if
[
"
$action
"
=
"U"
]
;
then
if
[
"
$action
"
=
"U"
]
;
then
dockerUp+
=
" --build"
dockerUp+
=
" --build"
fi
fi
...
@@ -394,14 +405,14 @@ while true; do
...
@@ -394,14 +405,14 @@ while true; do
dockerid
=
$_containers
dockerid
=
$_containers
else
else
echo
"Select a container:"
echo
"Select a container:"
echo
"
$_containers
"
|
sed
"s#^# #g
"
sed
"s#^# #g"
<<<
"
$_containers
"
echo
-n
"id or name >"
echo
-n
"id or name >"
read
dockerid
read
-r
dockerid
fi
fi
test
-z
"
$dockerid
"
||
(
test
-z
"
$dockerid
"
||
(
echo
echo
echo
"> docker exec -it
$dockerid
/bin/bash (type 'exit' + Return when finished)"
echo
"> docker exec -it
$dockerid
/bin/bash (type 'exit' + Return when finished)"
docker
exec
-it
$dockerid
/bin/bash
docker
exec
-it
"
$dockerid
"
/bin/bash
)
)
;;
;;
p
)
p
)
...
@@ -409,14 +420,15 @@ while true; do
...
@@ -409,14 +420,15 @@ while true; do
dockerid
=
"
${
APP_NAME
}
-server"
dockerid
=
"
${
APP_NAME
}
-server"
echo
-n
"Scanning ... "
echo
-n
"Scanning ... "
_iFiles
=
$(
docker
exec
-it
$dockerid
/bin/bash
-c
"find . -name '*.php' "
|
wc
-l
)
typeset
-i
_iFiles
_iFiles
=
$(
docker
exec
-it
"
$dockerid
"
/bin/bash
-c
"find . -name '*.php' "
|
wc
-l
)
if
[
$_iFiles
-gt
0
]
;
then
if
[
$_iFiles
-gt
0
]
;
then
echo
"found
$_iFiles
[*.php] files ... errors from PHP
$APP_PHP_VERSION
linter:"
echo
"found
$_iFiles
[*.php] files ... errors from PHP
$APP_PHP_VERSION
linter:"
time
if
echo
$APP_PHP_VERSION
|
grep
-E
"([567]
\.
|8
\.
[012])"
>
/dev/null
;
then
time
if
echo
"
$APP_PHP_VERSION
"
|
grep
-E
"([567]
\.
|8
\.
[012])"
>
/dev/null
;
then
docker
exec
-it
$dockerid
/bin/bash
-c
"find . -name '*.php' -exec php -l {}
\;
| grep -v '^No syntax errors detected'"
docker
exec
-it
"
$dockerid
"
/bin/bash
-c
"find . -name '*.php' -exec php -l {}
\;
| grep -v '^No syntax errors detected'"
else
else
docker
exec
-it
$dockerid
/bin/bash
-c
"php -l
\$
( find . -name '*.php' ) | grep -v '^No syntax errors detected' "
docker
exec
-it
"
$dockerid
"
/bin/bash
-c
"php -l
\$
( find . -name '*.php' ) | grep -v '^No syntax errors detected' "
fi
fi
echo
echo
_wait
_wait
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment