From a5eae09d5de472609fb682e7d05bae8845ad6dbd Mon Sep 17 00:00:00 2001 From: Bitnami Bot Date: Fri, 19 Jun 2020 16:04:51 +0000 Subject: [PATCH] 2.5.1-debian-10-r3 release --- .../2/debian-10/Dockerfile | 2 +- .../prebuildfs/opt/bitnami/scripts/libfs.sh | 17 ++++ .../opt/bitnami/scripts/libpersistence.sh | 99 +++++++++++++++++++ bitnami/spring-cloud-dataflow/README.md | 2 +- 4 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libpersistence.sh diff --git a/bitnami/spring-cloud-dataflow/2/debian-10/Dockerfile b/bitnami/spring-cloud-dataflow/2/debian-10/Dockerfile index 6891d578a720..233fcbf04789 100644 --- a/bitnami/spring-cloud-dataflow/2/debian-10/Dockerfile +++ b/bitnami/spring-cloud-dataflow/2/debian-10/Dockerfile @@ -19,7 +19,7 @@ RUN apt-get update && apt-get upgrade -y && \ COPY rootfs / RUN /opt/bitnami/scripts/spring-cloud-dataflow/postunpack.sh ENV BITNAMI_APP_NAME="spring-cloud-dataflow" \ - BITNAMI_IMAGE_VERSION="2.5.1-debian-10-r2" \ + BITNAMI_IMAGE_VERSION="2.5.1-debian-10-r3" \ PATH="/opt/bitnami/java/bin:/opt/bitnami/common/bin:$PATH" USER 1001 diff --git a/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libfs.sh b/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libfs.sh index 251a47dc7052..c7c94c3ba988 100644 --- a/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libfs.sh +++ b/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libfs.sh @@ -59,6 +59,23 @@ is_dir_empty() { fi } +######################## +# Checks whether a mounted directory is empty or not +# arguments: +# $1 - directory +# returns: +# boolean +######################### +is_mounted_dir_empty() { + local dir="${1:?missing directory}" + + if is_dir_empty "$dir" || find "$dir" -mindepth 1 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" -exec false {} +; then + true + else + false + fi +} + ######################## # Checks whether a file can be written to or not # arguments: diff --git a/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libpersistence.sh b/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libpersistence.sh new file mode 100644 index 000000000000..d4a0b32e1132 --- /dev/null +++ b/bitnami/spring-cloud-dataflow/2/debian-10/prebuildfs/opt/bitnami/scripts/libpersistence.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# +# Bitnami persistence library +# Used for bringing persistence capabilities to applications that don't have clear separation of data and logic + +# shellcheck disable=SC1091 + +# Load Generic Libraries +. /opt/bitnami/scripts/libfs.sh +. /opt/bitnami/scripts/liblog.sh +. /opt/bitnami/scripts/libversion.sh + +# Functions + +######################## +# Persist an application directory +# Globals: +# BITNAMI_ROOT_DIR +# BITNAMI_VOLUME_DIR +# Arguments: +# $1 - App folder name +# $2 - List of app files to persist +# Returns: +# true if all steps succeeded, false otherwise +######################### +persist_app() { + local -r app="${1:?missing app}" + local -a files_to_restore + read -r -a files_to_persist <<< "$2" + local -r install_dir="${BITNAMI_ROOT_DIR}/${app}" + local -r persist_dir="${BITNAMI_VOLUME_DIR}/${app}" + # Persist the individual files + if [[ "${#files_to_persist[@]}" -lt 0 ]]; then + warn "No files are configured to be persisted" + return + fi + local file_to_persist_origin file_to_persist_destination file_to_persist_destination_folder + for file_to_persist in "${files_to_persist[@]}"; do + file_to_persist_origin="${install_dir}/${file_to_persist}" + file_to_persist_destination="${persist_dir}/${file_to_persist}" + file_to_persist_destination_folder="$(dirname "$file_to_persist_destination")" + mkdir -p "$file_to_persist_destination_folder" + cp -Lr "$file_to_persist_origin" "$file_to_persist_destination_folder" + done + # Install the persisted files into the installation directory, via symlinks + restore_persisted_app "$@" +} + +######################## +# Restore a persisted application directory +# Globals: +# BITNAMI_ROOT_DIR +# BITNAMI_VOLUME_DIR +# FORCE_MAJOR_UPGRADE +# Arguments: +# $1 - App folder name +# $2 - List of app files to restore +# Returns: +# true if all steps succeeded, false otherwise +######################### +restore_persisted_app() { + local -r app="${1:?missing app}" + local -a files_to_restore + read -r -a files_to_restore <<< "$2" + local -r install_dir="${BITNAMI_ROOT_DIR}/${app}" + local -r persist_dir="${BITNAMI_VOLUME_DIR}/${app}" + # Restore the individual persisted files + if [[ "${#files_to_restore[@]}" -lt 0 ]]; then + warn "No persisted files are configured to be restored" + return + fi + local file_to_restore_origin file_to_restore_destination + for file_to_restore in "${files_to_restore[@]}"; do + # We use realpath to ensure that the case of '.' is covered and the directory is removed + file_to_restore_origin="$(realpath "${install_dir}/${file_to_restore}")" + file_to_restore_destination="$(realpath "${persist_dir}/${file_to_restore}")" + rm -rf "$file_to_restore_origin" + ln -sfn "$file_to_restore_destination" "$file_to_restore_origin" + done +} + +######################## +# Check if an application directory was already persisted +# Globals: +# BITNAMI_VOLUME_DIR +# Arguments: +# $1 - App folder name +# Returns: +# true if all steps succeeded, false otherwise +######################### +is_app_initialized() { + local -r app="${1:?missing app}" + local -r persist_dir="${BITNAMI_VOLUME_DIR}/${app}" + if ! is_mounted_dir_empty "$persist_dir"; then + true + else + false + fi +} diff --git a/bitnami/spring-cloud-dataflow/README.md b/bitnami/spring-cloud-dataflow/README.md index 8490a9703575..26fc3e88fcd6 100644 --- a/bitnami/spring-cloud-dataflow/README.md +++ b/bitnami/spring-cloud-dataflow/README.md @@ -39,7 +39,7 @@ Non-root container images add an extra layer of security and are generally recom Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags [in our documentation page](https://docs.bitnami.com/tutorials/understand-rolling-tags-containers/). -* [`2-debian-10`, `2.5.1-debian-10-r2`, `2`, `2.5.1`, `latest` (2/debian-10/Dockerfile)](https://github.com/bitnami/bitnami-docker-spring-cloud-dataflow/blob/2.5.1-debian-10-r2/2/debian-10/Dockerfile) +* [`2-debian-10`, `2.5.1-debian-10-r3`, `2`, `2.5.1`, `latest` (2/debian-10/Dockerfile)](https://github.com/bitnami/bitnami-docker-spring-cloud-dataflow/blob/2.5.1-debian-10-r3/2/debian-10/Dockerfile) Subscribe to project updates by watching the [bitnami/spring-cloud-dataflow GitHub repo](https://github.com/bitnami/bitnami-docker-spring-cloud-dataflow).