22
33clear
44echo  " " 
5- echo  " ========================================================================== " 
6- echo  " |                                                                         |" 
7- echo  " |     full-stack-proxy-nginx-laravel-for-everyone-with-docker-compose      |" 
8- echo  " |                         by Erdal ALTIN                                   |" 
9- echo  " |                                                                         |" 
10- echo  " ========================================================================== " 
5+ echo  " =======================================================================" 
6+ echo  " |                                                                     |" 
7+ echo  " |   full-stack-proxy-nginx-laravel-for-everyone-with-docker-compose   |" 
8+ echo  " |                       by Erdal ALTIN                                |" 
9+ echo  " |                                                                     |" 
10+ echo  " =======================================================================" 
1111sleep 2
1212
13+ #  the "lpms" is an abbreviation of Linux Package Management System
14+ lpms=" " 
15+ for  i  in  apk dnf yum apt zypper
16+ do 
17+ 	if  [ -x  " $( command -v $i ) " ;  then 
18+ 		if  [ " $i " ==  " apk" 
19+ 		then 
20+ 			lpms=$i 
21+ 			sudo apk add --no-cache --upgrade grep
22+ 			break 
23+ 		elif  [ " $i " ==  " dnf" &&  ([[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " fedora" ||  (( [[ $(grep - Pow 'ID= \K[^;]* ' / etc/ os- release |  tr - d '"') !=  "centos" ]] &&  [[ $(grep - Pow 'ID_LIKE= \K[^;]* ' / etc/ os- release |  tr - d '"') ==  * "fedora"*  ]]) ||  ([[ $(grep - Pow 'ID_LIKE= \K[^;]* ' / etc/ os- release |  tr - d '"') ==  * "rhel"*  ]] &&  [ $(sudo uname - m) ==  "s390 x" ])) 
24+ 		then 
25+ 			lpms=$i 
26+ 			break 
27+ 		elif  [ " $i " ==  " yum" &&  ([[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " centos" ||  (( [[ $(grep - Pow 'ID= \K[^;]* ' / etc/ os- release |  tr - d '"') !=  "fedora" ]] &&  [[ $(grep - Pow 'ID_LIKE= \K[^;]* ' / etc/ os- release |  tr - d '"') ==  * "fedora"*  ]]) ||  ([[ $(grep - Pow 'ID_LIKE= \K[^;]* ' / etc/ os- release |  tr - d '"') ==  * "rhel"*  ]] &&  [ $(sudo uname - m) ==  "s390 x" ])) 
28+ 		then 
29+ 			lpms=$i 
30+ 			break 
31+ 		elif  [ " $i " ==  " apt" &&  ([[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  * " ubuntu" *  ]] ||  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  * " debian" *  ]] ||  [[ $( grep -Pow ' ID_LIKE=\K[^;]*' |  tr -d ' "' ) ==  * " ubuntu" *  ]] ||  [[ $( grep -Pow ' ID_LIKE=\K[^;]*' |  tr -d ' "' ) ==  * " debian" *  ]])
32+ 		then 
33+ 			lpms=$i 
34+ 			break 
35+ 		elif  [[ $( grep -Pow ' ID_LIKE=\K[^;]*' ) ==  * " suse" *  ]]
36+ 		then 
37+ 			lpms=$i 
38+ 			break 
39+ 		fi 
40+ 	fi 
41+ done 
42+ 
43+ if  [ -z  $lpms  ];  then 
44+ 	echo  " " 
45+ 	echo  " could not be detected package management system" 
46+ 	echo  " " 
47+ 	exit  0
48+ fi 
49+ 
50+ # #########
51+ #  set varnish version
52+ # #########
53+ varnish_version=" stable" 
54+ if  ([[ $( grep -Pow ' VERSION_ID=\K[^;]*' |  tr -d ' "' ) ==  9*  ]] &&  [ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " centos" ||  [ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " fedora" 
55+ then 
56+ 	varnish_version=" latest" 
57+ fi 
58+ 
59+ # #########
1360#  Uninstall old versions
14- echo  " Older versions of Docker were called docker, docker.io, or docker-engine. If these are installed, uninstall them" 
61+ # #########
62+ echo  " " 
63+ echo  " " 
64+ echo  " =======================================================================" 
65+ echo  " | Older versions of Docker were called docker, docker.io, or docker-engine." 
66+ echo  " | If these are installed or all conflicting packages, uninstall them." 
67+ echo  " =======================================================================" 
68+ echo  " " 
69+ sleep 2
1570
16- sudo apt-get remove docker docker-engine docker.io containerd runc
71+ #  linux remove command for pms
72+ if  [ " $lpms " ==  " apk" 
73+ then 
74+ 	sudo apk del docker podman-docker
75+ elif  [ " $lpms " ==  " dnf" 
76+ then 
77+ 	sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
78+ elif  [ " $lpms " ==  " yum" 
79+ then 
80+ 	sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc
81+ elif  [ " $lpms " ==  " apt" 
82+ then 
83+ 	for  pkg  in  docker docker-engine docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc;  do  sudo apt remove $pkg ;  done 
84+ elif  [ " $lpms " ==  " zypper" 
85+ then 
86+ 	if  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  * " sles" *  ]]
87+ 	then 
88+ 		sudo zypper remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine runc
89+ 	fi 
90+ else 
91+ 	echo  " " 
92+ 	echo  " could not be detected package management system" 
93+ 	echo  " " 
94+ 	exit  0
95+ fi 
1796
1897echo  " " 
1998echo  " Done ✓" 
20- echo  " ============================================" 
21- 
22- #  install start
23- sudo apt-get update
24- sudo apt-get install ca-certificates curl gnupg lsb-release
25- sudo mkdir -p /etc/apt/keyrings
26- curl -fsSL https://download.docker.com/linux/ubuntu/gpg |  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
27- echo  " deb [arch=$( dpkg --print-architecture) $( grep -Po ' UBUNTU_CODENAME=\K[^;]*' ) " |  sudo tee /etc/apt/sources.list.d/docker.list >  /dev/null
28- sudo apt-get update
29- 
30- Installed=` sudo apt-cache policy docker-ce |  sed -n ' 2p' |  cut -c 14-` 
31- Candidate=` sudo apt-cache policy docker-ce |  sed -n ' 3p' |  cut -c 14-` 
32- 
33- if  [[ " $Installed " !=  " $Candidate " ;  then 
34- 	sudo apt-get install docker-ce docker-ce-cli containerd.io
35- elif  [[ " $Installed " ==  " $Candidate " ;  then 
99+ echo  " =======================================================================" 
100+ 
101+ # #########
102+ #  Install Docker
103+ # #########
104+ echo  " " 
105+ echo  " " 
106+ echo  " =======================================================================" 
107+ echo  " | Install Docker..." 
108+ echo  " =======================================================================" 
109+ echo  " " 
110+ sleep 2
111+ 
112+ if  [ " $lpms " ==  " apk" 
113+ then 
114+ 	sudo apk add --update docker openrc bind-tools
115+ 	sudo rc-update add docker boot
116+ 	sudo service docker start
117+ elif  [ " $lpms " ==  " dnf" 
118+ then 
119+ 	sudo dnf -y install dnf-plugins-core
120+ 	if  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " fedora" ||  ([[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " rhel" &&  [ $( sudo uname -m) ==  " s390x" 
121+ 	then 
122+ 		sudo dnf config-manager --add-repo https://download.docker.com/linux/$( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) 
123+ 		sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin bind-utils
124+ 	elif  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) !=  " rhel" 
125+ 	then 
126+ 		sudo dnf install docker
127+ 	else 
128+ 		echo  " " 
129+ 		echo  " unsupport operation system and/or architecture" 
130+ 		echo  " " 
131+ 		exit  0
132+ 	fi 
133+ elif  [ " $lpms " ==  " yum" 
134+ then 
135+ 	sudo yum install -y yum-utils
136+ 	if  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " centos" ||  ([[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  " rhel" &&  [ $( sudo uname -m) ==  " s390x" 
137+ 	then 
138+ 		sudo yum-config-manager --add-repo https://download.docker.com/linux/$( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) 
139+ 		sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin bind-utils
140+ 	elif  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) !=  " rhel" 
141+ 	then  
142+ 		sudo yum install docker
143+ 	else 
144+ 		echo  " " 
145+ 		echo  " unsupport operation system and/or architecture" 
146+ 		echo  " " 
147+ 		exit  0
148+ 	fi 
149+ elif  [ " $lpms " ==  " zypper" 
150+ then 
151+ 	if  [[ $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) ==  * " sles" *  ]] &&  [ $( sudo uname -m) ==  " s390x" 
152+ 	then 
153+ 		#  "https://download.opensuse.org/repositories/security:/SELinux/openSUSE_Factory/security:SELinux.repo"
154+ 		sudo zypper addrepo " https://download.opensuse.org/repositories/security/$( grep -Pow ' VERSION_ID=\K[^;]*' |  tr -d ' "' ) " 
155+ 		sudo zypper addrepo https://download.docker.com/linux/sles/docker-ce.repo
156+ 		sudo zypper install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
157+ 	else 
158+ 		sudo SUSEConnect -p sle-module-containers/$( sudo uname -s) $( sudo uname -m) ' ' 
159+ 		sudo zypper install docker
160+ 	fi 
161+ 
162+ 	# Installed=`sudo zypper search --installed-only -v docker | sed -n '6p' | cut -c 28-40`
163+ 	# Candidate=`sudo zypper info docker | sed -n '10p' | cut -c 18-`
164+ elif  [ " $lpms " ==  " apt" 
165+ then 
166+ 	sudo apt update
167+ 	sudo apt install ca-certificates curl gnupg lsb-release
168+ 	sudo mkdir -m 0755 /etc/apt/keyrings
169+ 	sudo curl -fsSL https://download.docker.com/linux/$( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) |  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
170+ 	sudo chmod a+r /etc/apt/keyrings/docker.gpg
171+ 	#  Add the repository to Apt sources:
172+ 	echo  " deb [arch=$( dpkg --print-architecture) $( grep -Pow ' ID=\K[^;]*' |  tr -d ' "' ) $( grep -Po ' VERSION_CODENAME=\K[^;]*' ) " |  sudo tee /etc/apt/sources.list.d/docker.list >  /dev/null
173+ 	sudo apt update
174+ 	sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
175+ 
176+ 	# Installed=`sudo apt-cache policy docker-ce | sed -n '2p' | cut -c 14-`
177+ 	# Candidate=`sudo apt-cache policy docker-ce | sed -n '3p' | cut -c 14-`
178+ else 
36179	echo  " " 
37- 	echo  ' docker currently version already installed.' 
180+ 	echo  " could not be detected package management system" 
181+ 	echo  " " 
182+ 	exit  0
38183fi 
39184
185+ # sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
186+ # if [[ "$Installed" != "$Candidate" ]]; then
187+ # 	sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
188+ # elif [[ "$Installed" == "$Candidate" ]]; then
189+ # 	echo ""
190+ # 	echo 'docker currently version already installed.'
191+ # fi
192+ 
193+ if  [ $?  -ne  0 ]
194+ then 
195+ 	exit  0
196+ fi 
197+ 
198+ if  [ $lpms  !=  " apk" 
199+ then 
200+ 	sudo systemctl enable  docker.service
201+ 	sudo systemctl enable  containerd.service
202+ 	sudo systemctl start docker
203+ fi 
40204
41205echo  " " 
42206echo  " Done ✓" 
43- echo  " ============================================" 
207+ echo  " ======================================================================= " 
44208
45209# #########
46210#  Run Docker without sudo rights
47211# #########
48212echo  " " 
49213echo  " " 
50- echo  " ============================================" 
214+ echo  " ======================================================================= " 
51215echo  " | Running Docker without sudo rights..." 
52- echo  " ============================================" 
216+ echo  " ======================================================================= " 
53217echo  " " 
54218sleep 2
55219
@@ -59,38 +223,52 @@ sudo usermod -aG docker ${USER}
59223
60224echo  " " 
61225echo  " Done ✓" 
62- echo  " ============================================" 
226+ echo  " ======================================================================= " 
63227
64228# #########
65229#  Install Docker Compose
66230# #########
67231echo  " " 
68232echo  " " 
69- echo  " ============================================" 
70- echo  " | Installing Docker Compose v2.12.2 ..." 
71- echo  " ============================================" 
233+ echo  " ======================================================================= " 
234+ echo  " | Installing Docker Compose v2.23.3 ..." 
235+ echo  " ======================================================================= " 
72236echo  " " 
73237sleep 2
74238
75239sudo mkdir -p /usr/local/lib/docker/cli-plugins
76- sudo curl -SL " https://github.com/docker/compose/releases/download/v2.12.2 /docker-compose-$( uname -s) $( uname -m) " 
240+ sudo curl -SL " https://github.com/docker/compose/releases/download/v2.23.3 /docker-compose-$( uname -s) $( uname -m) " 
77241sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
78242
243+ echo  " " 
244+ echo  " Done ✓" 
245+ echo  " =======================================================================" 
246+ 
247+ # #########
79248#  permission for Docker daemon socket
249+ # #########
250+ echo  " " 
251+ echo  " " 
252+ echo  " =======================================================================" 
253+ echo  " | permission for Docker daemon socket..." 
254+ echo  " =======================================================================" 
255+ echo  " " 
256+ sleep 2
257+ 
80258sudo chmod 666 /var/run/docker.sock
81259
82260echo  " " 
83261echo  " Done ✓" 
84- echo  " ============================================" 
262+ echo  " ======================================================================= " 
85263
86264# #########
87265#  Setup project variables
88266# #########
89267echo  " " 
90268echo  " " 
91- echo  " ============================================" 
269+ echo  " ======================================================================= " 
92270echo  " | Please enter project related variables..." 
93- echo  " ============================================" 
271+ echo  " ======================================================================= " 
94272echo  " " 
95273sleep 2
96274
182360done 
183361echo  " Ok." 
184362
185- local_timezone_regex=" ^[a-zA-Z0-9/+-_]{1,}$" 
363+ which_db=" " 
364+ db_authentication_plugin=" mysql_native_password" 
365+ db_authentication_password=" USING PASSWORD('" $pma_password " ')" 
366+ db_package_manager=" apt-get update \&\& apt-get install -y gettext-base" 
367+ db_admin_commandline=" mariadb-admin" 
368+ PS3=" Select the database: " 
369+ select  db  in  mariadb mysql
370+ do 
371+ 	which_db=$db 
372+ 	if  [ $REPLY  -eq  2 ]
373+ 	then 
374+ 		db_authentication_plugin=" caching_sha2_password" 
375+ 		db_authentication_password=" BY '" $pma_password " '" 
376+ 		db_package_manager=" microdnf install -y gettext" 
377+ 		db_admin_commandline=" mysqladmin" 
378+ 	fi 
379+ 	if  [ $REPLY  -eq  1 ] ||  [ $REPLY  -eq  2 ]
380+ 	then 
381+ 		break 
382+ 	else 
383+ 		PS3=" Select the database: " 
384+ 	fi 
385+ done 
386+ echo  " Ok." 
387+ 
388+ local_timezone_regex=" ^[a-zA-Z0-9/+_-]{1,}$" 
186389read  -p ' Enter container local Timezone(default : America/Los_Angeles, to see the other timezones, https://docs.diladele.com/docker/timezones.html): ' 
187390:  ${local_timezone:= America/ Los_Angeles} 
188391while  [[ !  $local_timezone  =~  $local_timezone_regex  ]]
@@ -203,18 +406,26 @@ case "$choice" in
203406esac 
204407
205408cp ./phpmyadmin/apache2/sites-available/default-ssl.sample.conf ./phpmyadmin/apache2/sites-available/default-ssl.conf
206- sed -i  ' s/example.com/ ' $domain_name ' /g ' apache2/sites-available/default-ssl.conf 
409+ cp ./database/phpmyadmin/sql/create_tables.sql.template.example  ./database/ phpmyadmin/sql/create_tables.sql.template 
207410
208411cp env.example .env
209412
413+ sed -i ' s/db_authentication_plugin/' $db_authentication_plugin ' /' 
414+ sed -i " s/db_authentication_password/${db_authentication_password} /" 
415+ sed -i ' s/db_authentication_plugin/' $db_authentication_plugin ' /' 
416+ sed -i " s|db_package_manager|${db_package_manager} |" 
417+ sed -i ' s/db_admin_commandline/' $db_admin_commandline ' /' 
210418sed -i ' s/example.com/' $domain_name ' /' 
419+ sed -i ' s/example.com/' $domain_name ' /g' 
211420sed -i ' s/email@domain.com/' $email ' /' 
421+ sed -i ' s/which_db/' $which_db ' /g' 
212422sed -i ' s/db_username/' $db_username ' /g' 
213423sed -i ' s/db_password/' $db_password ' /g' 
214424sed -i ' s/db_name/' $db_name ' /' 
215425sed -i ' s/mysql_root_password/' $mysql_root_password ' /' 
216426sed -i ' s/pma_username/' $pma_username ' /' 
217427sed -i ' s/pma_password/' $pma_password ' /' 
428+ sed -i ' s/pma_controluser/' $pma_username ' /g' 
218429sed -i " s@directory_path@$( pwd) " 
219430sed -i ' s/local_timezone/' $local_timezone ' /' 
220431
@@ -251,7 +462,7 @@ if [ -x "$(command -v docker)" ] && [ "$(docker compose version)" ]; then
251462			# done
252463			echo  " " 
253464			echo  " Reloading proxy ssl configuration" 
254-              docker container restart proxy >  /dev/null 2>&1 
465+ 			 docker container restart proxy >  /dev/null 2>&1 
255466			echo  " Ok." 
256467			echo  " " 
257468			echo  " completed setup" 
@@ -265,10 +476,12 @@ if [ -x "$(command -v docker)" ] && [ "$(docker compose version)" ]; then
265476	else 
266477		echo  " " 
267478		echo  " Error! could not installed Laravel and the other services with docker compose" >&2 
479+ 		echo  " " 
268480		exit  1
269481	fi 
270482else 
271483	echo  " " 
272484	echo  " not found docker and/or docker compose, Install docker and/or docker compose" >&2 
485+ 	echo  " " 
273486	exit  1
274- fi 
487+ fi 
0 commit comments