myvemail/build/run/docker-entrypoint/init.d/00-mariadb.sh
2024-08-09 12:50:33 +00:00

64 lines
1.7 KiB
Bash
Executable file

#!/usr/bin/env bash
# Exit if any errors pop up
set -e
# Remove sock
rm -f /run/mysqld/mysqld.sock
# Abort if setup hasn't been completed yet
if [ ! -d /var/lib/mysql/mysql/ ]
then
echo "MariaDB does not appear to be properly installed. Exiting..."
exit 1
fi
# Function to wait for temporary mariadb to be ready
function wait_for_mariadb_start
{
# Start mariadb
mariadbd-safe --user=root --datadir=/var/lib/mysql/ &
until mariadb --user=root --database=mysql -e "show tables;" >/dev/null
do
sleep 1
done
}
# Function to wait for mariadb to fully exit
function wait_for_mariadb_stop
{
mariadb --user=root -e "shutdown;"
until ! mariadb --user=root --database=mysql -e "show tables;" >/dev/null
do
sleep 1
done
}
# Roundcube database
if [ ! -d /var/lib/mysql/${MYVEMAIL_ROUNDCUBE_DBNAME}/ ]
then
wait_for_mariadb_start
mariadb -u root <<- ROUNDCUBE
CREATE DATABASE ${MYVEMAIL_ROUNDCUBE_DBNAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON ${MYVEMAIL_ROUNDCUBE_DBNAME}.* TO '${MYVEMAIL_ROUNDCUBE_DBUSER}'@'localhost' IDENTIFIED BY '${MYVEMAIL_ROUNDCUBE_DBPASS}';
flush privileges;
ROUNDCUBE
mariadb ${MYVEMAIL_ROUNDCUBE_DBNAME} </usr/share/webapps/roundcube/SQL/mysql.initial.sql
wait_for_mariadb_stop
fi
# Postfixadmin database
if [ ! -d /var/lib/mysql/${MYVEMAIL_POSTFIXADMIN_DBNAME}/ ]
then
wait_for_mariadb_start
mariadb -u root <<- POSTFIXADMIN
CREATE DATABASE ${MYVEMAIL_POSTFIXADMIN_DBNAME};
GRANT ALL PRIVILEGES ON ${MYVEMAIL_POSTFIXADMIN_DBNAME}.* to '${MYVEMAIL_POSTFIXADMIN_DBUSER}'@'localhost' IDENTIFIED BY '${MYVEMAIL_POSTFIXADMIN_DBPASS}';
flush privileges;
POSTFIXADMIN
wait_for_mariadb_stop
fi
# Start mariadb
mariadbd --user=root --datadir=/var/lib/mysql/ &