22
33clear
44echo " "
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 " ======================================================================= "
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+ 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) == "s390 x" ])) )
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) == "s390 x" ])) )
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
1887echo " "
1988echo " 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
38173fi
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
41195echo " "
42196echo " Done ✓"
43- echo " ============================================"
197+ echo " ======================================================================= "
44198
45199# #########
46200# Run Docker without sudo rights
47201# #########
48202echo " "
49203echo " "
50- echo " ============================================"
204+ echo " ======================================================================= "
51205echo " | Running Docker without sudo rights..."
52- echo " ============================================"
206+ echo " ======================================================================= "
53207echo " "
54208sleep 2
55209
@@ -59,38 +213,52 @@ sudo usermod -aG docker ${USER}
59213
60214echo " "
61215echo " Done ✓"
62- echo " ============================================"
216+ echo " ======================================================================= "
63217
64218# #########
65219# Install Docker Compose
66220# #########
67221echo " "
68222echo " "
69- echo " ============================================"
70- echo " | Installing Docker Compose v2.12.2 ..."
71- echo " ============================================"
223+ echo " ======================================================================= "
224+ echo " | Installing Docker Compose v2.23.3 ..."
225+ echo " ======================================================================= "
72226echo " "
73227sleep 2
74228
75229sudo 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
77231sudo 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+
80248sudo chmod 666 /var/run/docker.sock
81249
82250echo " "
83251echo " Done ✓"
84- echo " ============================================"
252+ echo " ======================================================================= "
85253
86254# #########
87255# Setup project variables
88256# #########
89257echo " "
90258echo " "
91- echo " ============================================"
259+ echo " ======================================================================= "
92260echo " | Please enter project related variables..."
93- echo " ============================================"
261+ echo " ======================================================================= "
94262echo " "
95263sleep 2
96264
182350done
183351echo " 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,}$"
186379read -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}
188381while [[ ! $local_timezone =~ $local_timezone_regex ]]
@@ -203,23 +396,31 @@ case "$choice" in
203396esac
204397
205398cp ./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
208401cp 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
210408sed -i ' s/example.com/' $domain_name ' /' .env
409+ sed -i ' s/example.com/' $domain_name ' /g' ./phpmyadmin/apache2/sites-available/default-ssl.conf
211410sed -i ' s/email@domain.com/' $email ' /' .env
411+ sed -i ' s/which_db/' $which_db ' /g' .env
212412sed -i ' s/db_username/' $db_username ' /g' .env
213413sed -i ' s/db_password/' $db_password ' /g' .env
214414sed -i ' s/db_name/' $db_name ' /' .env
215415sed -i ' s/mysql_root_password/' $mysql_root_password ' /' .env
216416sed -i ' s/pma_username/' $pma_username ' /' .env
217417sed -i ' s/pma_password/' $pma_password ' /' .env
418+ sed -i ' s/pma_controluser/' $pma_username ' /g' ./database/phpmyadmin/sql/create_tables.sql.template
218419sed -i " s@directory_path@$( pwd) @" .env
219420sed -i ' s/local_timezone/' $local_timezone ' /' .env
220421
221422if [ -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
270472else
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