56 lines
2.2 KiB
Bash
Executable File
56 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
die() {
|
|
printf '[kaidi-baota] ERROR: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
RELEASE_ROOT=$(cd "$SCRIPT_DIR/.." && pwd)
|
|
APP_JAR="$RELEASE_ROOT/app.jar"
|
|
PUBLIC_INDEX="$RELEASE_ROOT/public/index.html"
|
|
VERSION_FILE="$RELEASE_ROOT/VERSION"
|
|
|
|
[ -s "$APP_JAR" ] || die "app.jar is missing from $RELEASE_ROOT"
|
|
[ -s "$PUBLIC_INDEX" ] || die "public/index.html is missing from $RELEASE_ROOT"
|
|
[ -s "$VERSION_FILE" ] || die "VERSION is missing from $RELEASE_ROOT"
|
|
|
|
JAVA_BIN=${KAIDI_JAVA_BIN:-}
|
|
if [ -z "$JAVA_BIN" ] && [ -n "${JAVA_HOME:-}" ]; then
|
|
JAVA_BIN="$JAVA_HOME/bin/java"
|
|
fi
|
|
if [ -z "$JAVA_BIN" ]; then
|
|
JAVA_BIN=$(command -v java 2>/dev/null || true)
|
|
fi
|
|
[ -n "$JAVA_BIN" ] || die "Java 17 or newer was not found"
|
|
if [[ "$JAVA_BIN" == */* ]]; then
|
|
[ -x "$JAVA_BIN" ] || die "Java executable is not available at $JAVA_BIN"
|
|
else
|
|
command -v "$JAVA_BIN" >/dev/null 2>&1 || die "Java executable $JAVA_BIN is not available"
|
|
fi
|
|
|
|
export SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-production}
|
|
export SERVER_ADDRESS=${SERVER_ADDRESS:-127.0.0.1}
|
|
export SERVER_PORT=${SERVER_PORT:-18080}
|
|
export FINANCE_SETUP_ENABLED=${FINANCE_SETUP_ENABLED:-false}
|
|
export FINANCE_BOOTSTRAP_ENABLED=${FINANCE_BOOTSTRAP_ENABLED:-false}
|
|
export FINANCE_UPDATE_ENABLED=${FINANCE_UPDATE_ENABLED:-false}
|
|
export FILE_SCANNER_ENABLED=${FILE_SCANNER_ENABLED:-false}
|
|
export FINANCE_STATIC_LOCATIONS=${FINANCE_STATIC_LOCATIONS:-file:$RELEASE_ROOT/public/}
|
|
export UPDATE_CURRENT_VERSION_FILE=${UPDATE_CURRENT_VERSION_FILE:-$VERSION_FILE}
|
|
export APP_VERSION=${APP_VERSION:-$(tr -d '\r\n' < "$VERSION_FILE")}
|
|
|
|
if [ "$FINANCE_SETUP_ENABLED" != true ]; then
|
|
for name in DB_URL DB_USERNAME DB_PASSWORD FIELD_ENCRYPTION_KEY FILE_STORAGE_ROOT FILE_STORAGE_TEMP; do
|
|
[ -n "${!name:-}" ] || die "$name must be configured in the Baota project environment"
|
|
done
|
|
for directory in "$FILE_STORAGE_ROOT" "$FILE_STORAGE_TEMP"; do
|
|
[ -d "$directory" ] || die "Storage directory $directory does not exist"
|
|
[ -w "$directory" ] || die "Startup user cannot write storage directory $directory"
|
|
done
|
|
fi
|
|
|
|
cd "$RELEASE_ROOT"
|
|
exec "$JAVA_BIN" -XX:MaxRAMPercentage=70 -Dfile.encoding=UTF-8 -jar "$APP_JAR"
|