2025-12-25 09:31:52 +08:00

82 lines
2.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "$@"