#!/bin/bash mysqlContainer=$(docker ps | grep 'mysql\|maria' | awk {'print $NF'}) #gets every container with a name containing mysql/mariadb postgreContainer=$(docker ps | grep -Ei 'postgre'| grep -Eiv 'gitlab' | awk {'print $NF'}) #gets every container with a name containing postgre gitlabPotsgreContainer=$(docker ps | grep -Ei 'postgre'| grep -Ei 'gitlab' | awk {'print $NF'}) #special gitlab because it use other env variables timestamp=$(date +%Y-%m-%d_%H-%M-%S) for container in $mysqlContainer; do containerStringParts=$(echo $container | tr "." "\n") for single in $containerStringParts; do simpleName=$single break 1 done docker exec $container sh -c 'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -y' >/root/backups/db/$simpleName-$timestamp.sql done for container in $postgreContainer; do containerStringParts=$(echo $container | tr "." "\n") for single in $containerStringParts; do simpleName=$single break 1 done docker exec $container sh -c 'pg_dump --dbname=postgresql://"$POSTGRES_USER":"$POSTGRES_PASSWORD"@localhost/"$POSTGRES_DB"' > /root/backups/db/$simpleName-$timestamp.sql done for container in $gitlabPotsgreContainer; do containerStringParts=$(echo $container | tr "." "\n") for single in $containerStringParts; do simpleName=$single break 1 done docker exec $container sh -c 'pg_dump --dbname=postgresql://"$DB_USER":"$DB_PASS"@localhost/"$DB_NAME"' > /root/backups/db/$simpleName-$timestamp.sql done