82 lines
2.5 KiB
Bash
82 lines
2.5 KiB
Bash
#!/bin/sh
|
||
# =============================================================================
|
||
# Docker Entrypoint Script for seer-admin
|
||
# - 支持 JAVA_OPTS 覆盖
|
||
# - 添加默认 JVM 参数
|
||
# - 支持优雅关闭 (exec)
|
||
# - 可扩展(健康检查、依赖等待等)
|
||
# =============================================================================
|
||
|
||
set -eu
|
||
|
||
log() {
|
||
echo "[INFO] $(date '+%Y-%m-%d %H:%M:%S') $*"
|
||
}
|
||
|
||
warn() {
|
||
echo "[WARN] $(date '+%Y-%m-%d %H:%M:%S') $*" >&2
|
||
}
|
||
|
||
error() {
|
||
echo "[ERROR] $(date '+%Y-%m-%d %H:%M:%S') $*" >&2
|
||
}
|
||
|
||
log "Starting seer-admin..."
|
||
|
||
# -----------------------------------------------------------------------------
|
||
# 设置默认环境变量
|
||
# -----------------------------------------------------------------------------
|
||
SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE:-prod}"
|
||
NACOS_DISCOVERY_IP="${NACOS_DISCOVERY_IP:-$(hostname -i)}"
|
||
|
||
# -----------------------------------------------------------------------------
|
||
# 合并环境变量和默认 JVM 参数
|
||
# -----------------------------------------------------------------------------
|
||
|
||
# 用户通过 -e JAVA_OPTS 传递的参数优先
|
||
USER_JAVA_OPTS="${JAVA_OPTS:-}"
|
||
|
||
# 内置默认 JVM 参数
|
||
DEFAULT_JAVA_OPTS="
|
||
-Xms1g
|
||
-Xmx1g
|
||
-Xmn512m
|
||
-XX:+UseG1GC
|
||
-XX:MaxGCPauseMillis=200
|
||
-XX:+UseContainerSupport
|
||
-XX:+UseNUMA
|
||
-XX:+ParallelRefProcEnabled
|
||
-XX:+UseStringDeduplication
|
||
-XX:MaxRAMPercentage=70.0
|
||
-XX:MetaspaceSize=256m
|
||
-XX:MaxMetaspaceSize=256m
|
||
-XX:MaxDirectMemorySize=512m
|
||
-XX:+HeapDumpOnOutOfMemoryError
|
||
-XX:HeapDumpPath=./user_heapdump.hprof
|
||
-Djava.security.egd=file:/dev/./urandom
|
||
"
|
||
|
||
# 合并:用户参数 + 默认参数
|
||
if [ -z "$USER_JAVA_OPTS" ]; then
|
||
JAVA_OPTS="$DEFAULT_JAVA_OPTS"
|
||
log "使用内置默认 JVM 参数"
|
||
else
|
||
JAVA_OPTS="$USER_JAVA_OPTS"
|
||
log "使用用户提供的 JVM 参数"
|
||
fi
|
||
|
||
# -----------------------------------------------------------------------------
|
||
# 可选:打印环境变量(调试用)
|
||
# -----------------------------------------------------------------------------
|
||
log "Spring Profiles Active: $SPRING_PROFILES_ACTIVE"
|
||
log "Nacos Discovery IP: $NACOS_DISCOVERY_IP"
|
||
log "JVM Options: $JAVA_OPTS"
|
||
|
||
# -----------------------------------------------------------------------------
|
||
# 执行主应用(关键:使用 exec,让 Java 成为 PID=1)
|
||
# -----------------------------------------------------------------------------
|
||
exec java \
|
||
${JAVA_OPTS} \
|
||
-Dspring.profiles.active="${SPRING_PROFILES_ACTIVE}" \
|
||
-Dspring.cloud.nacos.discovery.ip="${NACOS_DISCOVERY_IP}" \
|
||
-jar /app/java/seer-admin/app.jar "$@" |