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[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | tr -d ' "' ) == * " ubuntu" * ]] || [[ $( grep -Pow ' ID=\K[^;]*' /etc/os-release | tr -d ' "' ) == * " debian" * ]] || [[ $( grep -Pow ' ID_LIKE=\K[^;]*' /etc/os-release | tr -d ' "' ) == * " ubuntu" * ]] || [[ $( grep -Pow ' ID_LIKE=\K[^;]*' /etc/os-release | tr -d ' "' ) == * " debian" * ]])
32+ then
33+ lpms=$i
34+ break
35+ elif [[ $( grep -Pow ' ID_LIKE=\K[^;]*' /etc/os-release) == * " 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[^;]*' /etc/os-release | tr -d ' "' ) == 9* ]] && [ $( grep -Pow ' ID=\K[^;]*' /etc/os-release | tr -d ' "' ) == " centos" ]) || [ $( grep -Pow ' ID=\K[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | 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) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $( grep -Po ' UBUNTU_CODENAME=\K[^;]*' /etc/os-release) stable" | 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[^;]*' /etc/os-release | tr -d ' "' ) == " fedora" ]] || ([[ $( grep -Pow ' ID=\K[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | tr -d ' "' ) /docker-ce.repo
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[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | tr -d ' "' ) == " centos" ]] || ([[ $( grep -Pow ' ID=\K[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | tr -d ' "' ) /docker-ce.repo
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[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | 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[^;]*' /etc/os-release | tr -d ' "' ) /security.repo"
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) -r ' '
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[^;]*' /etc/os-release | tr -d ' "' ) /gpg | 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) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$( grep -Pow ' ID=\K[^;]*' /etc/os-release | tr -d ' "' ) $( grep -Po ' VERSION_CODENAME=\K[^;]*' /etc/os-release) stable" | 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) " -o /usr/local/lib/docker/cli-plugins/docker-compose
240+ sudo curl -SL " https://github.com/docker/compose/releases/download/v2.23.3 /docker-compose-$( uname -s) -$( uname -m) " -o /usr/local/lib/docker/cli-plugins/docker-compose
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): ' local_timezone
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 ' ./phpmyadmin/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 ' /' ./database/phpmyadmin/sql/create_tables.sql.template
414+ sed -i " s/db_authentication_password/${db_authentication_password} /" ./database/phpmyadmin/sql/create_tables.sql.template
415+ sed -i ' s/db_authentication_plugin/' $db_authentication_plugin ' /' .env
416+ sed -i " s|db_package_manager|${db_package_manager} |" .env
417+ sed -i ' s/db_admin_commandline/' $db_admin_commandline ' /' .env
210418sed -i ' s/example.com/' $domain_name ' /' .env
419+ sed -i ' s/example.com/' $domain_name ' /g' ./phpmyadmin/apache2/sites-available/default-ssl.conf
211420sed -i ' s/email@domain.com/' $email ' /' .env
421+ sed -i ' s/which_db/' $which_db ' /g' .env
212422sed -i ' s/db_username/' $db_username ' /g' .env
213423sed -i ' s/db_password/' $db_password ' /g' .env
214424sed -i ' s/db_name/' $db_name ' /' .env
215425sed -i ' s/mysql_root_password/' $mysql_root_password ' /' .env
216426sed -i ' s/pma_username/' $pma_username ' /' .env
217427sed -i ' s/pma_password/' $pma_password ' /' .env
428+ sed -i ' s/pma_controluser/' $pma_username ' /g' ./database/phpmyadmin/sql/create_tables.sql.template
218429sed -i " s@directory_path@$( pwd) @" .env
219430sed -i ' s/local_timezone/' $local_timezone ' /' .env
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