All checks were successful
		
		
	
	Build a dev image / build (push) Successful in 11s
				
			
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# Environment variables
 | 
						|
#
 | 
						|
# CONTAINER - name of the container where the database is running
 | 
						|
# NOTIFY_URL - optional, URL to send notification to
 | 
						|
# TARGET_DIR - directory where to store the backup
 | 
						|
 | 
						|
if [ -z "$CONTAINER" ]; then
 | 
						|
    echo "CONTAINER environment variable is not set."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "$TARGET_DIR" ]; then
 | 
						|
    echo "TARGET_DIR environment variable is not set."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
docker info > /dev/null 2>&1
 | 
						|
if [ ! $? -eq 0 ]; then
 | 
						|
    echo "Docker is not available."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
if [ ! -d "$TARGET_DIR" ]; then
 | 
						|
    echo "TARGET_DIR does not exist. Creating it..."
 | 
						|
    exit 2
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
echo "Starting backup for container: $CONTAINER"
 | 
						|
if [ `docker exec -i $CONTAINER test -e /usr/bin/mariadb-dump && echo "yes" || echo "no"` = "yes" ]; then
 | 
						|
    DBTYPE="mariadb"
 | 
						|
    FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER_$DB_NAME.sql.zst.tmp
 | 
						|
    docker exec -i $CONTAINER mariadb-dump \
 | 
						|
        --user=root \
 | 
						|
        --password=$MARIADB_ROOT_PASSWORD \
 | 
						|
        --add-drop-trigger \
 | 
						|
        --add-drop-table \
 | 
						|
        --add-drop-database \
 | 
						|
        --hex-blob \
 | 
						|
        --compress \
 | 
						|
        --events \
 | 
						|
        --routines \
 | 
						|
        --single-transaction \
 | 
						|
        --triggers | zstd -1 > $TARGET_DIR/
 | 
						|
        mv $TARGET_DIR/$DBTYPE_$CONTAINER_$DB_NAME.sql.zst.tmp $TARGET_DIR/$DBTYPE_$CONTAINER_$DB_NAME.sql.zst
 | 
						|
elif [ `docker exec -i $CONTAINER test -e /usr/bin/pg_dump && echo "yes" || echo "no"` = "yes" ]; then
 | 
						|
    DBTYPE="pgsql"
 | 
						|
    FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER_$DB_NAME.sql.zst
 | 
						|
    docker exec -i $CONTAINER pg_dump --username=$DB_USER --password=$PGPASSWORD $DB_NAME | zstd -1 > $TARGET_DIR/$FILENAME.tmp
 | 
						|
    mv $TARGET_DIR/$FILENAME.tmp $TARGET_DIR/$FILENAME
 | 
						|
else
 | 
						|
    echo "Unsupported database type or database client not found in the container."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
echo "Backup completed successfully."
 | 
						|
 | 
						|
if [ -n "$NOTIFY_URL" ]; then
 | 
						|
    curl $NOTIFY_URL
 | 
						|
fi
 |