[bitnami/parse-dashboard] Release 9.1.1-debian-12-r7 (#94027)

Signed-off-by: Bitnami Bot <bitnami.bot@broadcom.com>
This commit is contained in:
Bitnami Bot
2026-05-27 15:38:56 +02:00
committed by GitHub
parent 7d99893b03
commit 3507b96803
12 changed files with 80 additions and 19 deletions
@@ -7,7 +7,7 @@ ARG DOWNLOADS_URL="downloads.bitnami.com/files/stacksmith"
ARG TARGETARCH
LABEL org.opencontainers.image.base.name="docker.io/bitnami/minideb:bookworm" \
org.opencontainers.image.created="2026-05-23T10:13:17Z" \
org.opencontainers.image.created="2026-05-27T13:18:17Z" \
org.opencontainers.image.description="Application packaged by Broadcom, Inc." \
org.opencontainers.image.documentation="https://github.com/bitnami/containers/tree/main/bitnami/parse-dashboard/README.md" \
org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/parse-dashboard" \
@@ -35,12 +35,12 @@ RUN --mount=type=secret,id=downloads_url,env=SECRET_DOWNLOADS_URL \
for COMPONENT in "${COMPONENTS[@]}"; do \
if [ ! -f "${COMPONENT}.tar.gz" ]; then \
curl -SsLf "https://${DOWNLOADS_URL}/${COMPONENT}.tar.gz" -O ; \
curl -SsLf "https://${DOWNLOADS_URL}/${COMPONENT}.tar.gz.sha256" -O ; \
fi ; \
sha256sum -c "${COMPONENT}.tar.gz.sha256" ; \
sha256sum -c "/opt/bitnami/checksums/${COMPONENT}.tar.gz.sha256" ; \
tar -zxf "${COMPONENT}.tar.gz" -C /opt/bitnami --strip-components=2 --no-same-owner ; \
rm -rf "${COMPONENT}".tar.gz{,.sha256} ; \
done
rm -rf "${COMPONENT}".tar.gz ; \
done ; \
rm -rf /opt/bitnami/checksums ;
RUN apt-get update && apt-get upgrade -y && \
apt-get clean && rm -rf /var/lib/apt/lists /var/cache/apt/archives
RUN chmod g+rwX /opt/bitnami
@@ -51,7 +51,7 @@ COPY rootfs /
RUN /opt/bitnami/scripts/parse-dashboard/postunpack.sh
ENV APP_VERSION="9.1.1" \
BITNAMI_APP_NAME="parse-dashboard" \
IMAGE_REVISION="6" \
IMAGE_REVISION="7" \
PATH="/opt/bitnami/python/bin:/opt/bitnami/node/bin:/opt/bitnami/parse-dashboard/bin:$PATH"
EXPOSE 3000 4040
@@ -0,0 +1 @@
eda15cc265f7b8bd15e639bb1432b52c3d014a822cf00b7e1d646020c5a09957 node-24.16.0-0-linux-amd64-debian-12.tar.gz
@@ -0,0 +1 @@
94604e808d5f78d44320a904f2fbbdd0d1cb46d6b21c0af0106006a1b233181a node-24.16.0-0-linux-arm64-debian-12.tar.gz
@@ -0,0 +1 @@
00c5ac5a5ad281297af208b0dfe64d43eee23c5dbf0238f3a63fe29109b20132 parse-dashboard-9.1.1-0-linux-amd64-debian-12.tar.gz
@@ -0,0 +1 @@
0678fd8f046555b15cf5e176607f6b05deb7a968dbb9b21f1e733a8d78987c20 parse-dashboard-9.1.1-0-linux-arm64-debian-12.tar.gz
@@ -0,0 +1 @@
873f755a79e805bb950da235f991af2edbe89c23dad4b13cd33b089e4f1b7ff6 python-3.14.5-2-linux-amd64-debian-12.tar.gz
@@ -0,0 +1 @@
be023b204af7213748a2bae639e1eec89ce42238b376d68d6262ad364f49c1d3 python-3.14.5-2-linux-arm64-debian-12.tar.gz
@@ -139,3 +139,40 @@ wait_for_log_entry() {
return 1
fi
}
########################
# Creates a secure temporary file containing the provided secret
# Arguments:
# $1 - secret to write to the temporary file
# Returns:
# String
#########################
credential_to_temp_file() {
local secret="$1"
local tmp_file
# Use mktemp with a specific prefix for easier debugging if something lingers
if ! tmp_file=$(mktemp "${TMPDIR:-/tmp}/at.cred.XXXXXXXX"); then
echo "Error: Failed to create temp file" >&2
return 1
fi
# Restrict permissions before writing the secret
chmod 0600 "$tmp_file"
# Write secret and ensure it's flushed to disk
printf "%s" "$secret" > "$tmp_file"
# Output the filename so the caller can capture it
echo "$tmp_file"
}
########################
# Cleans up temporary files created by credential_to_temp_file
# Arguments:
# None
# Returns:
# None
#########################
cleanup_credentials() {
debug "Cleaning up temporary files containing credentials"
rm -rf "${TMPDIR:-/tmp}"/at.cred.*
}
@@ -131,6 +131,7 @@ relativize() {
# -d|--dir-mode - mode for files.
# -u|--user - user
# -g|--group - group
# -n|--no-dereference - do not follow symlinks (use for runtime root chown of daemon-writable dirs)
# Returns:
# None
#########################
@@ -140,6 +141,7 @@ configure_permissions_ownership() {
local file_mode=""
local user=""
local group=""
local follow_symlinks="yes"
# Validate arguments
shift 1
@@ -161,6 +163,9 @@ configure_permissions_ownership() {
shift
group="${1:?missing group}"
;;
-n | --no-dereference)
follow_symlinks="no"
;;
*)
echo "Invalid command line flag $1" >&2
return 1
@@ -169,22 +174,29 @@ configure_permissions_ownership() {
shift
done
# -L: follow symlinks and emits the target path
# This is dangerous at runtime, given a co-located lower-privileged process with write access
# to the target path can redirect the chown/chmod to arbitrary paths. Example:
# Lower-privileged process run: ln -s /etc /tmp/etc
# Then, setup.sh runs: configure_permissions_ownership --dir-mode 775 /tmp
local find_L_flag=(); [[ "$follow_symlinks" == "yes" ]] && find_L_flag=("-L")
# -h: changes symlink inode ownership without touching the target.
local chown_flags=(); [[ "$follow_symlinks" == "no" ]] && chown_flags=("-h")
read -r -a filepaths <<<"$paths"
for p in "${filepaths[@]}"; do
if [[ -e "$p" ]]; then
find -L "$p" -printf ""
if [[ -n $dir_mode ]]; then
find -L "$p" -type d ! -perm "$dir_mode" -print0 | xargs -r -0 chmod "$dir_mode"
find "${find_L_flag[@]}" "$p" -not -type l -type d ! -perm "$dir_mode" -print0 | xargs -r -0 chmod "$dir_mode"
fi
if [[ -n $file_mode ]]; then
find -L "$p" -type f ! -perm "$file_mode" -print0 | xargs -r -0 chmod "$file_mode"
find "${find_L_flag[@]}" "$p" -not -type l -type f ! -perm "$file_mode" -print0 | xargs -r -0 chmod "$file_mode"
fi
if [[ -n $user ]] && [[ -n $group ]]; then
find -L "$p" -print0 | xargs -r -0 chown "${user}:${group}"
find "${find_L_flag[@]}" "$p" -print0 | xargs -r -0 chown "${chown_flags[@]}" "${user}:${group}"
elif [[ -n $user ]] && [[ -z $group ]]; then
find -L "$p" -print0 | xargs -r -0 chown "${user}"
find "${find_L_flag[@]}" "$p" -print0 | xargs -r -0 chown "${chown_flags[@]}" "${user}"
elif [[ -z $user ]] && [[ -n $group ]]; then
find -L "$p" -print0 | xargs -r -0 chgrp "${group}"
find "${find_L_flag[@]}" "$p" -print0 | xargs -r -0 chgrp "${chown_flags[@]}" "${group}"
fi
else
stderr_print "$p does not exist"
@@ -73,6 +73,10 @@ parse_dashboard_validate() {
! is_empty_value "$PARSE_DASHBOARD_PARSE_PORT_NUMBER" && check_valid_port "PARSE_DASHBOARD_PARSE_PORT_NUMBER"
! is_empty_value "$PARSE_DASHBOARD_EXTERNAL_HTTPS_PORT_NUMBER" && check_valid_port "PARSE_DASHBOARD_EXTERNAL_HTTPS_PORT_NUMBER"
! is_empty_value "$PARSE_DASHBOARD_EXTERNAL_HTTP_PORT_NUMBER" && check_valid_port "PARSE_DASHBOARD_EXTERNAL_HTTP_PORT_NUMBER"
# Warn about insecure HTTPS usage
if ! is_boolean_yes "$PARSE_DASHBOARD_ENABLE_HTTPS"; then
warn "PARSE_DASHBOARD_ENABLE_HTTPS=no: Login credentials and session cookies will be transmitted in cleartext. Do not expose port 4040 to untrusted networks."
fi
return "$error_code"
}
@@ -93,7 +97,7 @@ parse_dashboard_initialize() {
info "Ensuring Parse directories exist"
ensure_dir_exists "$PARSE_DASHBOARD_VOLUME_DIR"
# Use daemon:root ownership for compatibility when running as a non-root user
am_i_root && configure_permissions_ownership "$PARSE_DASHBOARD_VOLUME_DIR" -d "775" -f "664" -u "$PARSE_DASHBOARD_DAEMON_USER" -g "root"
am_i_root && configure_permissions_ownership "$PARSE_DASHBOARD_VOLUME_DIR" -d "775" -f "664" -u "$PARSE_DASHBOARD_DAEMON_USER" -g "root" -n
local -r parse_url="${PARSE_DASHBOARD_PARSE_PROTOCOL}://${PARSE_DASHBOARD_PARSE_HOST}:${PARSE_DASHBOARD_PARSE_PORT_NUMBER}${PARSE_DASHBOARD_PARSE_MOUNT_PATH}"
# Configure Parse Dashboard using a configuration file
# Based on https://github.com/parse-community/parse-dashboard#configuring-parse-dashboard
@@ -106,9 +110,11 @@ parse_dashboard_initialize() {
parse_dashboard_conf_set "apps[0].appName" "$PARSE_DASHBOARD_APP_NAME"
parse_dashboard_conf_set "users[0].user" "$PARSE_DASHBOARD_USERNAME"
parse_dashboard_conf_set "users[0].pass" "$PARSE_DASHBOARD_PASSWORD"
chmod 600 "$PARSE_DASHBOARD_CONF_FILE"
else
warn "Parse Dashboard config.json detected in persistence. Persisting configuration files is deprecated"
cp "$persisted_conf_file" "$PARSE_DASHBOARD_CONF_FILE"
chmod 600 "$PARSE_DASHBOARD_CONF_FILE"
local -r parse_url="$(parse_dashboard_conf_get "apps[0].serverURL")"
info "Trying to connect to the Parse server ${parse_url}"
parse_dashboard_wait_for_parse_connection "$parse_url"
@@ -76,7 +76,7 @@ export PARSE_DASHBOARD_DAEMON_USER="parsedashboard"
export PARSE_DASHBOARD_DAEMON_GROUP="parsedashboard"
# Parse configuration
export PARSE_DASHBOARD_ENABLE_HTTPS="${PARSE_DASHBOARD_ENABLE_HTTPS:-no}"
export PARSE_DASHBOARD_ENABLE_HTTPS="${PARSE_DASHBOARD_ENABLE_HTTPS:-yes}"
export PARSE_DASHBOARD_EXTERNAL_HTTP_PORT_NUMBER="${PARSE_DASHBOARD_EXTERNAL_HTTP_PORT_NUMBER:-80}" # only used during the first initialization
export PARSE_DASHBOARD_EXTERNAL_HTTPS_PORT_NUMBER="${PARSE_DASHBOARD_EXTERNAL_HTTPS_PORT_NUMBER:-443}" # only used during the first initialization
PARSE_DASHBOARD_PARSE_HOST="${PARSE_DASHBOARD_PARSE_HOST:-"${PARSE_HOST:-}"}"
@@ -88,7 +88,7 @@ PARSE_DASHBOARD_PARSE_APP_ID="${PARSE_DASHBOARD_PARSE_APP_ID:-"${PARSE_APP_ID:-}
export PARSE_DASHBOARD_PARSE_APP_ID="${PARSE_DASHBOARD_PARSE_APP_ID:-myappID}"
export PARSE_DASHBOARD_APP_NAME="${PARSE_DASHBOARD_APP_NAME:-MyDashboard}"
PARSE_DASHBOARD_PARSE_MASTER_KEY="${PARSE_DASHBOARD_PARSE_MASTER_KEY:-"${PARSE_MASTER_KEY:-}"}"
export PARSE_DASHBOARD_PARSE_MASTER_KEY="${PARSE_DASHBOARD_PARSE_MASTER_KEY:-mymasterKey}"
export PARSE_DASHBOARD_PARSE_MASTER_KEY="${PARSE_DASHBOARD_PARSE_MASTER_KEY:-}"
PARSE_DASHBOARD_PARSE_MOUNT_PATH="${PARSE_DASHBOARD_PARSE_MOUNT_PATH:-"${PARSE_MOUNT_PATH:-}"}"
export PARSE_DASHBOARD_PARSE_MOUNT_PATH="${PARSE_DASHBOARD_PARSE_MOUNT_PATH:-/parse}"
PARSE_DASHBOARD_PARSE_PROTOCOL="${PARSE_DASHBOARD_PARSE_PROTOCOL:-"${PARSE_PROTOCOL:-}"}"
@@ -97,6 +97,6 @@ export PARSE_DASHBOARD_PARSE_PROTOCOL="${PARSE_DASHBOARD_PARSE_PROTOCOL:-http}"
# Parse credentials
PARSE_DASHBOARD_USERNAME="${PARSE_DASHBOARD_USERNAME:-"${PARSE_DASHBOARD_USER:-}"}"
export PARSE_DASHBOARD_USERNAME="${PARSE_DASHBOARD_USERNAME:-user}"
export PARSE_DASHBOARD_PASSWORD="${PARSE_DASHBOARD_PASSWORD:-bitnami}"
export PARSE_DASHBOARD_PASSWORD="${PARSE_DASHBOARD_PASSWORD:-}"
# Custom environment variables may be defined below
+3 -3
View File
@@ -163,7 +163,7 @@ The following tables list the main variables you can set.
| Name | Description | Default Value |
|----------------------------------------------|---------------------------------------------------------|---------------|
| `PARSE_DASHBOARD_FORCE_OVERWRITE_CONF_FILE` | Force the config.json config file generation. | `no` |
| `PARSE_DASHBOARD_ENABLE_HTTPS` | Whether to enable HTTPS for Parse Dashboard by default. | `no` |
| `PARSE_DASHBOARD_ENABLE_HTTPS` | Whether to enable HTTPS for Parse Dashboard by default. | `yes` |
| `PARSE_DASHBOARD_EXTERNAL_HTTP_PORT_NUMBER` | External HTTP port for Parse Dashboard. | `80` |
| `PARSE_DASHBOARD_EXTERNAL_HTTPS_PORT_NUMBER` | External HTTPS port for Parse Dashboard. | `443` |
| `PARSE_DASHBOARD_PARSE_HOST` | Parse host name. | `parse` |
@@ -171,11 +171,11 @@ The following tables list the main variables you can set.
| `PARSE_DASHBOARD_PARSE_PORT_NUMBER` | Parse server port number. | `1337` |
| `PARSE_DASHBOARD_PARSE_APP_ID` | A sample string environment variable. | `myappID` |
| `PARSE_DASHBOARD_APP_NAME` | Parse Dashboard App name. | `MyDashboard` |
| `PARSE_DASHBOARD_PARSE_MASTER_KEY` | Parse server master key. | `mymasterKey` |
| `PARSE_DASHBOARD_PARSE_MASTER_KEY` | Parse server master key. | `nil` |
| `PARSE_DASHBOARD_PARSE_MOUNT_PATH` | Parse Dashboard mount path. | `/parse` |
| `PARSE_DASHBOARD_PARSE_PROTOCOL` | Parse server protocol. | `http` |
| `PARSE_DASHBOARD_USERNAME` | Parse Dashboard user name. | `user` |
| `PARSE_DASHBOARD_PASSWORD` | Parse Dashboard user password. | `bitnami` |
| `PARSE_DASHBOARD_PASSWORD` | Parse Dashboard user password. | `nil` |
#### Read-only environment variables