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