From cb3fadc37100847a63746843a8ad259b700fad19 Mon Sep 17 00:00:00 2001
From: Andy Postnikov <apostnikov@gmail.com>
Date: Thu, 23 May 2024 19:13:33 +0200
Subject: [PATCH] DB: mariadb 10.6/10.3 prevent re-start at start-up #3449463

---
 db/mariadb-10.3.22/Dockerfile      |  2 +-
 db/mariadb-10.3.22/conf/startup.sh | 24 +++++++++++++++++++-----
 db/mariadb-10.6/Dockerfile         |  2 +-
 db/mariadb-10.6/conf/startup.sh    | 24 +++++++++++++++++++-----
 4 files changed, 40 insertions(+), 12 deletions(-)

diff --git a/db/mariadb-10.3.22/Dockerfile b/db/mariadb-10.3.22/Dockerfile
index 2475e5f5..1d07492e 100644
--- a/db/mariadb-10.3.22/Dockerfile
+++ b/db/mariadb-10.3.22/Dockerfile
@@ -1,4 +1,4 @@
-#####
+######
 FROM docker.io/mariadb:10.3.22
 MAINTAINER drupalci
 
diff --git a/db/mariadb-10.3.22/conf/startup.sh b/db/mariadb-10.3.22/conf/startup.sh
index 998cdc0e..75443109 100755
--- a/db/mariadb-10.3.22/conf/startup.sh
+++ b/db/mariadb-10.3.22/conf/startup.sh
@@ -1,5 +1,17 @@
 #!/bin/bash
 
+terminate() {
+    echo "Caught termination signal, shutting down..."
+    if [ -n "${PID}" ]; then
+        kill -TERM "$(pgrep -P ${PID} -x mysqld)"
+        wait "${PID}"
+    fi
+    echo "Shutdown complete."
+    exit 0
+}
+
+trap terminate SIGTERM SIGINT
+
 if [ ! -f /var/lib/mysql/ibdata1 ];
     then
     echo "rebuilding /var/lib/mysql/ibdata1"
@@ -12,10 +24,12 @@ if [ ! -f /var/lib/mysql/ibdata1 ];
     mysql -e "CREATE USER 'drupaltestbot'@'%' IDENTIFIED BY 'drupaltestbotpw';"
     mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'drupaltestbot'@'%' WITH GRANT OPTION; SELECT User FROM mysql.user; FLUSH PRIVILEGES;"
     echo "Grants added"
-    killall mysqld
-    wait ${PID}
 fi
 
-/usr/bin/mysqld_safe;
-echo "mysql died at $(date)";
-
+# Start MySQL server if container restart and data is ready
+if [ -z "${PID}" ]; then
+    /usr/bin/mysqld_safe &
+    PID="${!}"
+fi
+wait ${PID}
+echo "mysql exited at $(date)";
diff --git a/db/mariadb-10.6/Dockerfile b/db/mariadb-10.6/Dockerfile
index 9a9c9ac1..88c467e4 100644
--- a/db/mariadb-10.6/Dockerfile
+++ b/db/mariadb-10.6/Dockerfile
@@ -1,4 +1,4 @@
-####
+#####
 FROM docker.io/mariadb:10.6
 MAINTAINER drupalci
 
diff --git a/db/mariadb-10.6/conf/startup.sh b/db/mariadb-10.6/conf/startup.sh
index 998cdc0e..b3ccd0b5 100755
--- a/db/mariadb-10.6/conf/startup.sh
+++ b/db/mariadb-10.6/conf/startup.sh
@@ -1,5 +1,17 @@
 #!/bin/bash
 
+terminate() {
+    echo "Caught termination signal, shutting down..."
+    if [ -n "${PID}" ]; then
+        kill -TERM "$(pgrep -P ${PID} -x mariadbd)"
+        wait "${PID}"
+    fi
+    echo "Shutdown complete."
+    exit 0
+}
+
+trap terminate SIGTERM SIGINT
+
 if [ ! -f /var/lib/mysql/ibdata1 ];
     then
     echo "rebuilding /var/lib/mysql/ibdata1"
@@ -12,10 +24,12 @@ if [ ! -f /var/lib/mysql/ibdata1 ];
     mysql -e "CREATE USER 'drupaltestbot'@'%' IDENTIFIED BY 'drupaltestbotpw';"
     mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'drupaltestbot'@'%' WITH GRANT OPTION; SELECT User FROM mysql.user; FLUSH PRIVILEGES;"
     echo "Grants added"
-    killall mysqld
-    wait ${PID}
 fi
 
-/usr/bin/mysqld_safe;
-echo "mysql died at $(date)";
-
+# Start MySQL server if container restart and data is ready
+if [ -z "${PID}" ]; then
+    /usr/bin/mysqld_safe &
+    PID="${!}"
+fi
+wait ${PID}
+echo "mysql exited at $(date)";
-- 
GitLab