anxin-ruoyi/docker/configs/backend-env.sh
2026-01-08 20:47:24 +08:00

162 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
# 后端环境变量配置脚本
# 用于设置不同环境下的后端应用配置
set -e
# 默认环境变量配置
export DB_HOST=${DB_HOST:-"anxin-mysql"}
export DB_PORT=${DB_PORT:-"3306"}
export DB_NAME=${DB_NAME:-"anxin_prod"}
export DB_USER=${DB_USER:-"anxin_prod"}
export DB_PASSWORD=${DB_PASSWORD:-"prod_password"}
# 应用端口和网络配置
export SERVER_PORT=${SERVER_PORT:-"8080"}
export SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-"docker"}
# 日志配置
export LOG_LEVEL=${LOG_LEVEL:-"INFO"}
export LOG_PATH=${LOG_PATH:-"/app/logs"}
export LOG_MAX_SIZE=${LOG_MAX_SIZE:-"100MB"}
export LOG_MAX_FILES=${LOG_MAX_FILES:-"10"}
# 监控配置
export MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=${MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE:-"health,info,metrics"}
# JVM配置
export JAVA_OPTS=${JAVA_OPTS:-"-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"}
# 安全配置
export JWT_SECRET=${JWT_SECRET:-"abcdefghijklmnopqrstuvwxyz"}
export JWT_EXPIRE_TIME=${JWT_EXPIRE_TIME:-"30"}
# Druid监控配置
export DRUID_USERNAME=${DRUID_USERNAME:-"admin"}
export DRUID_PASSWORD=${DRUID_PASSWORD:-"admin123"}
# 文件上传路径
export UPLOAD_PATH=${UPLOAD_PATH:-"/app/uploadPath"}
# Swagger配置
export SWAGGER_ENABLED=${SWAGGER_ENABLED:-"false"}
# 时区配置
export TZ=${TZ:-"Asia/Shanghai"}
# 函数:验证必需的环境变量
validate_required_env() {
local required_vars=("DB_HOST" "DB_PORT" "DB_NAME" "DB_USER" "DB_PASSWORD")
local missing_vars=()
for var in "${required_vars[@]}"; do
if [[ -z "${!var}" ]]; then
missing_vars+=("$var")
fi
done
if [[ ${#missing_vars[@]} -gt 0 ]]; then
echo "错误: 以下必需的环境变量未设置:"
printf '%s\n' "${missing_vars[@]}"
return 1
fi
echo "所有必需的环境变量已设置"
return 0
}
# 函数:显示当前环境配置
show_config() {
echo "=== 后端应用环境配置 ==="
echo "数据库配置:"
echo " DB_HOST: $DB_HOST"
echo " DB_PORT: $DB_PORT"
echo " DB_NAME: $DB_NAME"
echo " DB_USER: $DB_USER"
echo " DB_PASSWORD: [HIDDEN]"
echo ""
echo "应用配置:"
echo " SERVER_PORT: $SERVER_PORT"
echo " SPRING_PROFILES_ACTIVE: $SPRING_PROFILES_ACTIVE"
echo ""
echo "日志配置:"
echo " LOG_LEVEL: $LOG_LEVEL"
echo " LOG_PATH: $LOG_PATH"
echo " LOG_MAX_SIZE: $LOG_MAX_SIZE"
echo " LOG_MAX_FILES: $LOG_MAX_FILES"
echo ""
echo "JVM配置:"
echo " JAVA_OPTS: $JAVA_OPTS"
echo ""
echo "其他配置:"
echo " TZ: $TZ"
echo " UPLOAD_PATH: $UPLOAD_PATH"
echo " SWAGGER_ENABLED: $SWAGGER_ENABLED"
echo "=========================="
}
# 函数:根据环境类型加载配置
load_environment() {
local env_type=${1:-"development"}
case $env_type in
"production")
export LOG_LEVEL="WARN"
export SWAGGER_ENABLED="false"
export JAVA_OPTS="-Xms1024m -Xmx2048m -Djava.security.egd=file:/dev/./urandom -XX:+UseG1GC"
echo "已加载生产环境配置"
;;
"staging")
export LOG_LEVEL="INFO"
export SWAGGER_ENABLED="true"
export JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
echo "已加载预发布环境配置"
;;
"development"|"dev")
export LOG_LEVEL="DEBUG"
export SWAGGER_ENABLED="true"
export JAVA_OPTS="-Xms256m -Xmx512m -Djava.security.egd=file:/dev/./urandom"
echo "已加载开发环境配置"
;;
*)
echo "警告: 未知的环境类型 '$env_type',使用默认配置"
;;
esac
}
# 自动加载当前环境配置
if [[ -n "$SPRING_PROFILES_ACTIVE" ]]; then
load_environment "$SPRING_PROFILES_ACTIVE"
fi
# 主函数
main() {
local command=${1:-"show"}
case $command in
"validate")
validate_required_env
;;
"show")
show_config
;;
"load")
local env_type=${2:-"development"}
load_environment "$env_type"
show_config
;;
*)
echo "用法: $0 {validate|show|load [environment]}"
echo " validate - 验证必需的环境变量"
echo " show - 显示当前环境配置"
echo " load - 加载指定环境配置 (development|staging|production)"
exit 1
;;
esac
}
# 如果脚本被直接执行,运行主函数
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
main "$@"
fi