Skip to content

Commit 91787fd

Browse files
committed
Update install.sh
1 parent 072d7ee commit 91787fd

File tree

1 file changed

+253
-40
lines changed

1 file changed

+253
-40
lines changed

install.sh

Lines changed: 253 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,218 @@
22

33
clear
44
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 "=========================================================================="
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 "======================================================================="
1111
sleep 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) == "s390x" ])))
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) == "s390x" ])))
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

1897
echo ""
1998
echo "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
38183
fi
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

41205
echo ""
42206
echo "Done ✓"
43-
echo "============================================"
207+
echo "======================================================================="
44208

45209
##########
46210
# Run Docker without sudo rights
47211
##########
48212
echo ""
49213
echo ""
50-
echo "============================================"
214+
echo "======================================================================="
51215
echo "| Running Docker without sudo rights..."
52-
echo "============================================"
216+
echo "======================================================================="
53217
echo ""
54218
sleep 2
55219

@@ -59,38 +223,52 @@ sudo usermod -aG docker ${USER}
59223

60224
echo ""
61225
echo "Done ✓"
62-
echo "============================================"
226+
echo "======================================================================="
63227

64228
##########
65229
# Install Docker Compose
66230
##########
67231
echo ""
68232
echo ""
69-
echo "============================================"
70-
echo "| Installing Docker Compose v2.12.2..."
71-
echo "============================================"
233+
echo "======================================================================="
234+
echo "| Installing Docker Compose v2.23.3..."
235+
echo "======================================================================="
72236
echo ""
73237
sleep 2
74238

75239
sudo 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
77241
sudo 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+
80258
sudo chmod 666 /var/run/docker.sock
81259

82260
echo ""
83261
echo "Done ✓"
84-
echo "============================================"
262+
echo "======================================================================="
85263

86264
##########
87265
# Setup project variables
88266
##########
89267
echo ""
90268
echo ""
91-
echo "============================================"
269+
echo "======================================================================="
92270
echo "| Please enter project related variables..."
93-
echo "============================================"
271+
echo "======================================================================="
94272
echo ""
95273
sleep 2
96274

@@ -182,7 +360,32 @@ do
182360
done
183361
echo "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,}$"
186389
read -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}
188391
while [[ ! $local_timezone =~ $local_timezone_regex ]]
@@ -203,18 +406,26 @@ case "$choice" in
203406
esac
204407

205408
cp ./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

208411
cp 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
210418
sed -i 's/example.com/'$domain_name'/' .env
419+
sed -i 's/example.com/'$domain_name'/g' ./phpmyadmin/apache2/sites-available/default-ssl.conf
211420
sed -i 's/email@domain.com/'$email'/' .env
421+
sed -i 's/which_db/'$which_db'/g' .env
212422
sed -i 's/db_username/'$db_username'/g' .env
213423
sed -i 's/db_password/'$db_password'/g' .env
214424
sed -i 's/db_name/'$db_name'/' .env
215425
sed -i 's/mysql_root_password/'$mysql_root_password'/' .env
216426
sed -i 's/pma_username/'$pma_username'/' .env
217427
sed -i 's/pma_password/'$pma_password'/' .env
428+
sed -i 's/pma_controluser/'$pma_username'/g' ./database/phpmyadmin/sql/create_tables.sql.template
218429
sed -i "s@directory_path@$(pwd)@" .env
219430
sed -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
270482
else
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

Comments
 (0)