|
@@ -1,13 +1,12 @@
|
|
|
#!/bin/bash
|
|
|
|
|
|
. mailcow.conf
|
|
|
-./build-network.sh
|
|
|
|
|
|
-NAME="mysql-mailcow"
|
|
|
+NAME="mariadb-mailcow"
|
|
|
|
|
|
reconf() {
|
|
|
echo "Installing database schema (this will not overwrite existing data)"
|
|
|
- echo "It may take a while for MySQL to warm up, please wait..."
|
|
|
+ echo "It may take a while for MariaDB to warm up, please wait..."
|
|
|
until docker exec ${NAME} /bin/bash -c "mysql -u'${DBUSER}' -p'${DBPASS}' ${DBNAME} < /assets/init.sql"; do
|
|
|
echo "Trying again in 2 seconds..."
|
|
|
sleep 2
|
|
@@ -15,9 +14,20 @@ reconf() {
|
|
|
echo "Done."
|
|
|
}
|
|
|
|
|
|
+dump() {
|
|
|
+ DATE=$(date +"%Y%m%d_%H%M%S")
|
|
|
+ echo "Creating dump file ./backup_${DBNAME}_${DATE}.sql"
|
|
|
+ docker exec -it ${NAME} /bin/bash mysqldump --default-character-set=utf8mb4 -u${DBUSER} -p${DBPASS} ${DBNAME} > backup_${DBNAME}_${DATE}.sql
|
|
|
+}
|
|
|
+
|
|
|
+restore() {
|
|
|
+ echo "Restoring dump file ${2}..."
|
|
|
+ docker exec -i ${NAME} mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < ${1}
|
|
|
+}
|
|
|
+
|
|
|
insert_admin() {
|
|
|
echo 'Setting mailcow UI admin login to "admin:moohoo"...'
|
|
|
- echo "It may take a while for MySQL to warm up, please wait..."
|
|
|
+ echo "It may take a while for MariaDB to warm up, please wait..."
|
|
|
until docker exec ${NAME} /bin/bash -c "mysql -u'${DBUSER}' -p'${DBPASS}' ${DBNAME} < /assets/pw.sql"; do
|
|
|
echo "Trying again in 2 seconds..."
|
|
|
sleep 2
|
|
@@ -29,18 +39,31 @@ client() {
|
|
|
echo "==============================="
|
|
|
echo "DB: ${DBNAME} - USER: ${DBUSER}"
|
|
|
echo "==============================="
|
|
|
- docker exec -it ${NAME} /bin/bash -c "mysql -u'${DBUSER}' -p'${DBPASS}' ${DBNAME}"
|
|
|
+ docker exec -it ${NAME} mysql -u${DBUSER} -p${DBPASS} ${DBNAME}
|
|
|
}
|
|
|
|
|
|
-if [[ ${1} == "--init-schema" ]]; then
|
|
|
+if [[ ${1} == "--init-schema" ]]; then
|
|
|
reconf
|
|
|
exit 0
|
|
|
-elif [[ ${1} == "--client" ]]; then
|
|
|
+elif [[ ${1} == "--dump" ]]; then
|
|
|
+ dump
|
|
|
+ exit 0
|
|
|
+elif [[ ${1} == "--restore" ]]; then
|
|
|
+ if [[ -z ${2} || ! -f ${2} ]]; then
|
|
|
+ echo "Invalid input file"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+ restore ${2}
|
|
|
+ exit 0
|
|
|
+elif [[ ${1} == "--client" ]]; then
|
|
|
client
|
|
|
exit 0
|
|
|
-elif [[ ${1} == "--reset-admin" ]]; then
|
|
|
+elif [[ ${1} == "--reset-admin" ]]; then
|
|
|
insert_admin
|
|
|
exit 0
|
|
|
+elif [[ ! -z ${1} ]]; then
|
|
|
+ echo "Unknown parameter"
|
|
|
+ exit 1
|
|
|
fi
|
|
|
|
|
|
echo "Stopping and removing containers with name tag ${NAME}..."
|
|
@@ -49,11 +72,11 @@ if [[ ! -z $(docker ps -af "name=${NAME}" -q) ]]; then
|
|
|
docker rm $(docker ps -af "name=${NAME}" -q)
|
|
|
fi
|
|
|
|
|
|
-if [[ ! -z "$(docker images -q mysql:${DBVERS})" ]]; then
|
|
|
+if [[ ! -z "$(docker images -q mariadb:${DBVERS})" ]]; then
|
|
|
read -r -p "Found image locally. Delete local image and repull? [y/N] " response
|
|
|
response=${response,,}
|
|
|
if [[ $response =~ ^(yes|y)$ ]]; then
|
|
|
- docker rmi mysql:${DBVERS}
|
|
|
+ docker rmi mariadb:${DBVERS}
|
|
|
fi
|
|
|
fi
|
|
|
|
|
@@ -69,7 +92,7 @@ docker run \
|
|
|
-e MYSQL_DATABASE=${DBNAME} \
|
|
|
-e MYSQL_USER=${DBUSER} \
|
|
|
-e MYSQL_PASSWORD=${DBPASS} \
|
|
|
- -d mysql:${DBVERS}
|
|
|
+ -d mariadb:${DBVERS}
|
|
|
|
|
|
reconf
|
|
|
|