Add docker volume backups
This commit is contained in:
parent
8a14457aef
commit
51915829ab
2 changed files with 61 additions and 2 deletions
|
|
@ -18,7 +18,7 @@ cleanup() {
|
||||||
}
|
}
|
||||||
trap 'cleanup' INT TERM
|
trap 'cleanup' INT TERM
|
||||||
|
|
||||||
# region: ---------------------------------- DBBACKUPS ----------------------------------
|
# region: ------ DB_BACKUPS -----------------------------------------------------------------------
|
||||||
createDatabaseBackup() {
|
createDatabaseBackup() {
|
||||||
host=$1
|
host=$1
|
||||||
dbname=$2
|
dbname=$2
|
||||||
|
|
@ -64,6 +64,52 @@ createAllDatabaseBackups() {
|
||||||
createDatabaseBackup "$host" "$dbname" "$username" "$password" "$targetFolderPath"
|
createDatabaseBackup "$host" "$dbname" "$username" "$password" "$targetFolderPath"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
# endregion: ------------------------------- DBBACKUPS ----------------------------------
|
# endregion: --- DB_BACKUPS -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# region: ------ DOCKER_VOLUME_BACKUPS ------------------------------------------------------------
|
||||||
|
createDockerVolumeBackup() {
|
||||||
|
containerName=$1
|
||||||
|
volumeName=$2
|
||||||
|
specificVolumeBackupPath=$3
|
||||||
|
|
||||||
|
logInfo "Backup up Docker volume: $volumeName from running container: $containerName..."
|
||||||
|
|
||||||
|
logInfo "Stopping container: $containerName..."
|
||||||
|
docker stop "$containerName"
|
||||||
|
|
||||||
|
logInfo "Starting new container which copies over files..."
|
||||||
|
start=$SECONDS
|
||||||
|
docker run --rm -v "$volumeName:/volume" -v "$specificVolumeBackupPath:/target" --entrypoint "ash"\
|
||||||
|
alpine -c "cp -rf /volume/* /target/"
|
||||||
|
|
||||||
|
elapsedSeconds=$(( SECONDS - start ))
|
||||||
|
logInfo "Copying succeeded (in $elapsedSeconds seconds), restarting container..."
|
||||||
|
docker start "$containerName"
|
||||||
|
}
|
||||||
|
|
||||||
|
createAllDockerVolumeBackups() {
|
||||||
|
nrOfConfigurations="$(yq '.docker_volume_backups | length' <"$configurationFileLocation")"
|
||||||
|
logInfo "Backing up from $nrOfConfigurations docker configurations..."
|
||||||
|
|
||||||
|
dockerVolumeBackupPath="$workDirPath/docker_volumes"
|
||||||
|
mkdir -p "$dockerVolumeBackupPath"
|
||||||
|
|
||||||
|
for ((i = 0 ; i < "$nrOfConfigurations" ; i++)); do
|
||||||
|
dockerConfiguration="$(yq ".docker_volume_backups[$i]" <"$configurationFileLocation")"
|
||||||
|
containerName="$(echo "$dockerConfiguration" | jq -r '.container_name')"
|
||||||
|
volumeName="$(echo "$dockerConfiguration" | jq -r '.volume_name')"
|
||||||
|
|
||||||
|
specificVolumeBackupPath="$dockerVolumeBackupPath/$volumeName"
|
||||||
|
mkdir -p "$specificVolumeBackupPath"
|
||||||
|
|
||||||
|
createDockerVolumeBackup "$containerName" "$volumeName" "$specificVolumeBackupPath"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# endregion: --- DOCKER_VOLUME_BACKUPS ------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# region: ------ PREPARE_BACKUP_FILES -------------------------------------------------------------
|
||||||
createAllDatabaseBackups
|
createAllDatabaseBackups
|
||||||
|
echo
|
||||||
|
createAllDockerVolumeBackups
|
||||||
|
# endregion: --- PREPARE_BACKUP_FILES -------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,16 @@ database_backups:
|
||||||
dbname: wedding
|
dbname: wedding
|
||||||
username: wedding
|
username: wedding
|
||||||
password: "{{ wedding_postgres_pass }}"
|
password: "{{ wedding_postgres_pass }}"
|
||||||
|
docker_volume_backups:
|
||||||
|
- volume_name: actual_data
|
||||||
|
container_name: actual-server
|
||||||
|
- volume_name: grafana_data
|
||||||
|
container_name: grafana-server
|
||||||
|
- volume_name: changedetection_changedetection_data
|
||||||
|
container_name: changedetection-changedetection-server-1
|
||||||
|
- volume_name: hoarder_hoarder_data
|
||||||
|
container_name: hoarder-web-1
|
||||||
|
- volume_name: hoarder_meilisearch
|
||||||
|
container_name: hoarder-meilisearch-1
|
||||||
|
- volume_name: portainer_data
|
||||||
|
container_name: portainer
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue