diff --git a/entrypoint.sh b/entrypoint.sh index dd70c8ec..8e97badd 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -12,49 +12,68 @@ elif [ "$1" = "rustfs" ]; then set -- /usr/bin/rustfs "$@" fi -# 2) Parse and create local mount directories (ignore http/https), ensure /logs is included -VOLUME_RAW="${RUSTFS_VOLUMES:-/data}" -# Convert comma/tab to space -VOLUME_LIST=$(echo "$VOLUME_RAW" | tr ',\t' ' ') -LOCAL_VOLUMES="" -for vol in $VOLUME_LIST; do - case "$vol" in - /*) - case "$vol" in - http://*|https://*) : ;; - *) LOCAL_VOLUMES="$LOCAL_VOLUMES $vol" ;; - esac - ;; - *) - : # skip non-local paths - ;; - esac -done -# Ensure /logs is included -case " $LOCAL_VOLUMES " in - *" /logs "*) : ;; - *) LOCAL_VOLUMES="$LOCAL_VOLUMES /logs" ;; -esac +# 2) Process data volumes (separate from log directory) +DATA_VOLUMES="" +process_data_volumes() { + VOLUME_RAW="${RUSTFS_VOLUMES:-/data}" + # Convert comma/tab to space + VOLUME_LIST=$(echo "$VOLUME_RAW" | tr ',\t' ' ') + + for vol in $VOLUME_LIST; do + case "$vol" in + /*) + case "$vol" in + http://*|https://*) : ;; + *) DATA_VOLUMES="$DATA_VOLUMES $vol" ;; + esac + ;; + *) + : # skip non-local paths + ;; + esac + done + + echo "Initializing data directories:$DATA_VOLUMES" + for vol in $DATA_VOLUMES; do + if [ ! -d "$vol" ]; then + echo " mkdir -p $vol" + mkdir -p "$vol" + # If target user is specified, try to set directory owner to that user (non-recursive to avoid large disk overhead) + if [ -n "$RUSTFS_UID" ] && [ -n "$RUSTFS_GID" ]; then + chown "$RUSTFS_UID:$RUSTFS_GID" "$vol" 2>/dev/null || true + elif [ -n "$RUSTFS_USERNAME" ] && [ -n "$RUSTFS_GROUPNAME" ]; then + chown "$RUSTFS_USERNAME:$RUSTFS_GROUPNAME" "$vol" 2>/dev/null || true + fi + fi + done +} -echo "Initializing mount directories:$LOCAL_VOLUMES" -for vol in $LOCAL_VOLUMES; do - if [ ! -d "$vol" ]; then - echo " mkdir -p $vol" - mkdir -p "$vol" +# 3) Process log directory (separate from data volumes) +process_log_directory() { + LOG_DIR="${RUSTFS_OBS_LOG_DIRECTORY:-/logs}" + + echo "Initializing log directory: $LOG_DIR" + if [ ! -d "$LOG_DIR" ]; then + echo " mkdir -p $LOG_DIR" + mkdir -p "$LOG_DIR" # If target user is specified, try to set directory owner to that user (non-recursive to avoid large disk overhead) if [ -n "$RUSTFS_UID" ] && [ -n "$RUSTFS_GID" ]; then - chown "$RUSTFS_UID:$RUSTFS_GID" "$vol" 2>/dev/null || true + chown "$RUSTFS_UID:$RUSTFS_GID" "$LOG_DIR" 2>/dev/null || true elif [ -n "$RUSTFS_USERNAME" ] && [ -n "$RUSTFS_GROUPNAME" ]; then - chown "$RUSTFS_USERNAME:$RUSTFS_GROUPNAME" "$vol" 2>/dev/null || true + chown "$RUSTFS_USERNAME:$RUSTFS_GROUPNAME" "$LOG_DIR" 2>/dev/null || true fi fi -done +} -# 3) Default credentials warning +# Execute the separate processes +process_data_volumes +process_log_directory + +# 4) Default credentials warning if [ "${RUSTFS_ACCESS_KEY}" = "rustfsadmin" ] || [ "${RUSTFS_SECRET_KEY}" = "rustfsadmin" ]; then echo "!!!WARNING: Using default RUSTFS_ACCESS_KEY or RUSTFS_SECRET_KEY. Override them in production!" fi echo "Starting: $*" -set -- "$@" $LOCAL_VOLUMES +set -- "$@" $DATA_VOLUMES exec "$@"