Skip to content

Commit b0ef779

Browse files
committed
Update install.sh
1 parent 8b297b2 commit b0ef779

File tree

1 file changed

+244
-41
lines changed

1 file changed

+244
-41
lines changed

install.sh

Lines changed: 244 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,208 @@
22

33
clear
44
echo ""
5-
echo "================================================================="
6-
echo "| |"
7-
echo "| full-stack-nginx-symfony-for-everyone-with-docker-compose |"
8-
echo "| by Erdal ALTIN |"
9-
echo "| |"
10-
echo "================================================================="
5+
echo "======================================================================="
6+
echo "| |"
7+
echo "| full-stack-nginx-symfony-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+
break
22+
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" ])))
23+
then
24+
lpms=$i
25+
break
26+
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" ])))
27+
then
28+
lpms=$i
29+
break
30+
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"* ]])
31+
then
32+
lpms=$i
33+
break
34+
elif [[ $(grep -Pow 'ID_LIKE=\K[^;]*' /etc/os-release) == *"suse"* ]]
35+
then
36+
lpms=$i
37+
break
38+
fi
39+
fi
40+
done
41+
42+
if [ -z $lpms ]; then
43+
echo ""
44+
echo "could not be detected package management system"
45+
echo ""
46+
exit 0
47+
fi
48+
49+
##########
1350
# Uninstall old versions
14-
echo "Older versions of Docker were called docker, docker.io, or docker-engine. If these are installed, uninstall them"
51+
##########
52+
echo ""
53+
echo ""
54+
echo "======================================================================="
55+
echo "| Older versions of Docker were called docker, docker.io, or docker-engine."
56+
echo "| If these are installed or all conflicting packages, uninstall them."
57+
echo "======================================================================="
58+
echo ""
59+
sleep 2
1560

16-
sudo apt-get remove docker docker-engine docker.io containerd runc
61+
# linux remove command for pms
62+
if [ "$lpms" == "apk" ]
63+
then
64+
sudo apk del docker podman-docker
65+
elif [ "$lpms" == "dnf" ]
66+
then
67+
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
68+
elif [ "$lpms" == "yum" ]
69+
then
70+
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc
71+
elif [ "$lpms" == "apt" ]
72+
then
73+
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
74+
elif [ "$lpms" == "zypper" ]
75+
then
76+
if [[ $(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"') == *"sles"* ]]
77+
then
78+
sudo zypper remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine runc
79+
fi
80+
else
81+
echo ""
82+
echo "could not be detected package management system"
83+
echo ""
84+
exit 0
85+
fi
1786

1887
echo ""
1988
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
89+
echo "======================================================================="
90+
91+
##########
92+
# Install Docker
93+
##########
94+
echo ""
95+
echo ""
96+
echo "======================================================================="
97+
echo "| Install Docker..."
98+
echo "======================================================================="
99+
echo ""
100+
sleep 2
101+
102+
if [ "$lpms" == "apk" ]
103+
then
104+
sudo apk add --update docker openrc bind-tools
105+
sudo rc-update add docker boot
106+
sudo service docker start
107+
elif [ "$lpms" == "dnf" ]
108+
then
109+
sudo dnf -y install dnf-plugins-core
110+
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" ])
111+
then
112+
sudo dnf config-manager --add-repo https://download.docker.com/linux/$(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"')/docker-ce.repo
113+
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin bind-utils
114+
elif [[ $(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"') != "rhel" ]]
115+
then
116+
sudo dnf install docker
117+
else
118+
echo ""
119+
echo "unsupport operation system and/or architecture"
120+
echo ""
121+
exit 0
122+
fi
123+
elif [ "$lpms" == "yum" ]
124+
then
125+
sudo yum install -y yum-utils
126+
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" ])
127+
then
128+
sudo yum-config-manager --add-repo https://download.docker.com/linux/$(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"')/docker-ce.repo
129+
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin bind-utils
130+
elif [[ $(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"') != "rhel" ]]
131+
then
132+
sudo yum install docker
133+
else
134+
echo ""
135+
echo "unsupport operation system and/or architecture"
136+
echo ""
137+
exit 0
138+
fi
139+
elif [ "$lpms" == "zypper" ]
140+
then
141+
if [[ $(grep -Pow 'ID=\K[^;]*' /etc/os-release | tr -d '"') == *"sles"* ]] && [ $(sudo uname -m) == "s390x" ]
142+
then
143+
# "https://download.opensuse.org/repositories/security:/SELinux/openSUSE_Factory/security:SELinux.repo"
144+
sudo zypper addrepo "https://download.opensuse.org/repositories/security/$(grep -Pow 'VERSION_ID=\K[^;]*' /etc/os-release | tr -d '"')/security.repo"
145+
sudo zypper addrepo https://download.docker.com/linux/sles/docker-ce.repo
146+
sudo zypper install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
147+
else
148+
sudo SUSEConnect -p sle-module-containers/$(sudo uname -s)/$(sudo uname -m) -r ''
149+
sudo zypper install docker
150+
fi
151+
152+
#Installed=`sudo zypper search --installed-only -v docker | sed -n '6p' | cut -c 28-40`
153+
#Candidate=`sudo zypper info docker | sed -n '10p' | cut -c 18-`
154+
elif [ "$lpms" == "apt" ]
155+
then
156+
sudo apt update
157+
sudo apt install ca-certificates curl gnupg lsb-release
158+
sudo mkdir -m 0755 /etc/apt/keyrings
159+
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
160+
sudo chmod a+r /etc/apt/keyrings/docker.gpg
161+
# Add the repository to Apt sources:
162+
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
163+
sudo apt update
164+
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
165+
166+
#Installed=`sudo apt-cache policy docker-ce | sed -n '2p' | cut -c 14-`
167+
#Candidate=`sudo apt-cache policy docker-ce | sed -n '3p' | cut -c 14-`
168+
else
36169
echo ""
37-
echo 'docker currently version already installed.'
170+
echo "could not be detected package management system"
171+
echo ""
172+
exit 0
38173
fi
39174

175+
#sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
176+
#if [[ "$Installed" != "$Candidate" ]]; then
177+
# sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
178+
#elif [[ "$Installed" == "$Candidate" ]]; then
179+
# echo ""
180+
# echo 'docker currently version already installed.'
181+
#fi
182+
183+
if [ $? -ne 0 ]
184+
then
185+
exit 0
186+
fi
187+
188+
if [ $lpms != "apk" ]
189+
then
190+
sudo systemctl enable docker.service
191+
sudo systemctl enable containerd.service
192+
sudo systemctl start docker
193+
fi
40194

41195
echo ""
42196
echo "Done ✓"
43-
echo "============================================"
197+
echo "======================================================================="
44198

45199
##########
46200
# Run Docker without sudo rights
47201
##########
48202
echo ""
49203
echo ""
50-
echo "============================================"
204+
echo "======================================================================="
51205
echo "| Running Docker without sudo rights..."
52-
echo "============================================"
206+
echo "======================================================================="
53207
echo ""
54208
sleep 2
55209

@@ -59,38 +213,52 @@ sudo usermod -aG docker ${USER}
59213

60214
echo ""
61215
echo "Done ✓"
62-
echo "============================================"
216+
echo "======================================================================="
63217

64218
##########
65219
# Install Docker Compose
66220
##########
67221
echo ""
68222
echo ""
69-
echo "============================================"
70-
echo "| Installing Docker Compose v2.12.2..."
71-
echo "============================================"
223+
echo "======================================================================="
224+
echo "| Installing Docker Compose v2.23.3..."
225+
echo "======================================================================="
72226
echo ""
73227
sleep 2
74228

75229
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
230+
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
77231
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
78232

233+
echo ""
234+
echo "Done ✓"
235+
echo "======================================================================="
236+
237+
##########
79238
# permission for Docker daemon socket
239+
##########
240+
echo ""
241+
echo ""
242+
echo "======================================================================="
243+
echo "| permission for Docker daemon socket..."
244+
echo "======================================================================="
245+
echo ""
246+
sleep 2
247+
80248
sudo chmod 666 /var/run/docker.sock
81249

82250
echo ""
83251
echo "Done ✓"
84-
echo "============================================"
252+
echo "======================================================================="
85253

86254
##########
87255
# Setup project variables
88256
##########
89257
echo ""
90258
echo ""
91-
echo "============================================"
259+
echo "======================================================================="
92260
echo "| Please enter project related variables..."
93-
echo "============================================"
261+
echo "======================================================================="
94262
echo ""
95263
sleep 2
96264

@@ -182,7 +350,32 @@ do
182350
done
183351
echo "Ok."
184352

185-
local_timezone_regex="^[a-zA-Z0-9/+-_]{1,}$"
353+
which_db=""
354+
db_authentication_plugin="mysql_native_password"
355+
db_authentication_password="USING PASSWORD('"$pma_password"')"
356+
db_package_manager="apt-get update \&\& apt-get install -y gettext-base"
357+
db_admin_commandline="mariadb-admin"
358+
PS3="Select the database: "
359+
select db in mariadb mysql
360+
do
361+
which_db=$db
362+
if [ $REPLY -eq 2 ]
363+
then
364+
db_authentication_plugin="caching_sha2_password"
365+
db_authentication_password="BY '"$pma_password"'"
366+
db_package_manager="microdnf install -y gettext"
367+
db_admin_commandline="mysqladmin"
368+
fi
369+
if [ $REPLY -eq 1 ] || [ $REPLY -eq 2 ]
370+
then
371+
break
372+
else
373+
PS3="Select the database: "
374+
fi
375+
done
376+
echo "Ok."
377+
378+
local_timezone_regex="^[a-zA-Z0-9/+_-]{1,}$"
186379
read -p 'Enter container local Timezone(default : America/Los_Angeles, to see the other timezones, https://docs.diladele.com/docker/timezones.html): ' local_timezone
187380
: ${local_timezone:=America/Los_Angeles}
188381
while [[ ! $local_timezone =~ $local_timezone_regex ]]
@@ -203,23 +396,31 @@ case "$choice" in
203396
esac
204397

205398
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
399+
cp ./database/phpmyadmin/sql/create_tables.sql.template.example ./database/phpmyadmin/sql/create_tables.sql.template
207400

208401
cp env.example .env
209402

403+
sed -i 's/db_authentication_plugin/'$db_authentication_plugin'/' ./database/phpmyadmin/sql/create_tables.sql.template
404+
sed -i "s/db_authentication_password/${db_authentication_password}/" ./database/phpmyadmin/sql/create_tables.sql.template
405+
sed -i 's/db_authentication_plugin/'$db_authentication_plugin'/' .env
406+
sed -i "s|db_package_manager|${db_package_manager}|" .env
407+
sed -i 's/db_admin_commandline/'$db_admin_commandline'/' .env
210408
sed -i 's/example.com/'$domain_name'/' .env
409+
sed -i 's/example.com/'$domain_name'/g' ./phpmyadmin/apache2/sites-available/default-ssl.conf
211410
sed -i 's/email@domain.com/'$email'/' .env
411+
sed -i 's/which_db/'$which_db'/g' .env
212412
sed -i 's/db_username/'$db_username'/g' .env
213413
sed -i 's/db_password/'$db_password'/g' .env
214414
sed -i 's/db_name/'$db_name'/' .env
215415
sed -i 's/mysql_root_password/'$mysql_root_password'/' .env
216416
sed -i 's/pma_username/'$pma_username'/' .env
217417
sed -i 's/pma_password/'$pma_password'/' .env
418+
sed -i 's/pma_controluser/'$pma_username'/g' ./database/phpmyadmin/sql/create_tables.sql.template
218419
sed -i "s@directory_path@$(pwd)@" .env
219420
sed -i 's/local_timezone/'$local_timezone'/' .env
220421

221422
if [ -x "$(command -v docker)" ] && [ "$(docker compose version)" ]; then
222-
# Firstly: create external volume
423+
# Firstly: create external volume
223424
docker volume create --driver local --opt type=none --opt device=`pwd`/certbot --opt o=bind certbot-etc > /dev/null
224425
# installing Symfony and the other services
225426
docker compose up -d & export pid=$!
@@ -265,10 +466,12 @@ if [ -x "$(command -v docker)" ] && [ "$(docker compose version)" ]; then
265466
else
266467
echo ""
267468
echo "Error! could not installed Symfony and the other services with docker compose" >&2
469+
echo ""
268470
exit 1
269471
fi
270472
else
271473
echo ""
272-
echo "not found docker and/or docker compose, Install docker and/or docker compose" >&2
474+
echo "not found docker and/or docker compose, Install docker and/or docker compose" >&2
475+
echo ""
273476
exit 1
274-
fi
477+
fi

0 commit comments

Comments
 (0)