Skip to content

应用配置

后端平台使用分层配置系统。理解这些层级至关重要——配置错误是部署失败最常见的原因。

配置层级(优先级顺序)

1. Runtime flags      (-e SPRING_PROFILES_ACTIVE=test)       ← highest priority
2. Environment file   (--env-file /opt/slaunchx/.../test.env)
3. Profile YAML       (application-test.yml in JAR)
4. Base YAML          (application.yml in JAR)                ← lowest priority

高层级覆盖低层级。你永远不应修改 JAR 中的 YAML 文件——应使用 env 文件和运行时标志代替。

Spring Profiles

Profile用途使用场景
dev本地开发IDE / localhost
test集成测试CI/CD test 阶段
alpha预发布预发布环境
product生产线上生产环境

在容器启动时设置激活的 profile:

bash
-e SPRING_PROFILES_ACTIVE=test

环境变量参考

数据库(MySQL)

变量示例说明
DB_HOSTslaunchx-mysql-test使用 Docker 容器名,非 IP
DB_PORT3306Docker 内部端口,非宿主机映射端口
DB_NAMEslaunchx主数据库名
DB_USERNAMEslaunchx应用用户
DB_PASSWORD(secret)

已知问题:变量命名

dev profile 使用 DB_USERRABBITMQ_USER,而其他 profile 使用 DB_USERNAMERABBITMQ_USERNAME。请务必检查目标 profile 使用的变量名。使用错误的名称会导致静默回退到默认凭据。

Redis

变量示例说明
REDIS_HOSTslaunchx-redis-test容器名
REDIS_PORT6379内部端口
REDIS_DATABASE0数据库索引
REDIS_PASSWORD(secret)

RabbitMQ

变量示例说明
RABBITMQ_HOSTslaunchx-rabbitmq-test容器名
RABBITMQ_PORT5672AMQP 端口
RABBITMQ_USERNAMEslaunchx见上方命名警告
RABBITMQ_PASSWORD(secret)

安全与加密

变量示例说明
SLAUNCHX_SECURITY_ENCRYPTION_MASTER_KEYS_K1(base64)AES-256 密钥,32 字节 base64 编码
SLAUNCHX_SECURITY_ENCRYPTION_ACTIVE_KEY_VERSIONK1当前激活的主密钥
SLAUNCHX_SECURITY_ENCRYPTION_HKDF_SALT(hex)HKDF 密钥派生盐值
OTP_ENCRYPTION_KEY(base64)32 字节密钥,用于 OTP 密钥加密

加密密钥

这些密钥保护用户的静态数据。丢失主密钥意味着丢失所有加密数据的访问权限。 请安全备份这些值,永远不要以明文形式存储在版本控制中。

对象存储(MinIO)

变量示例说明
MINIO_ENDPOINThttp://slaunchx-minio-test:9000包含协议的完整 URL
MINIO_ACCESS_KEY(secret)
MINIO_SECRET_KEY(secret)

初始化引导(仅首次部署)

变量示例说明
SYSTEM_BOOTSTRAP_CONFIG/config/bootstrap.json机构初始化配置文件路径
SLAUNCHX_BOOTSTRAP_ADMIN_PASSWORD(secret)SYSTEM 初始管理员密码

这些仅在首次启动时需要,用于创建初始机构、门户配置和管理员账户。

外部集成(可选)

变量服务说明
TURNSTILE_SECRET_KEYCloudflare Turnstile机器人防护
STRIPE_API_KEYStripe支付处理
TRON_RPC_ENDPOINTTRON区块链访问
SOLANA_RPC_ENDPOINTSolana区块链访问

JVM 配置

通过 JAVA_OPTS 环境变量设置 JVM 选项:

bash
-e JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
环境推荐 Xms推荐 Xmx
test256m512m
alpha512m1024m
product1024m2048m

平台使用 JDK 21 虚拟线程spring.threads.virtual.enabled=true),因此线程池大小不像传统部署那样关键。

准备 Env 文件

为每个模块的每个环境创建一个 env 文件。以下是 app-prometheus 在 test 环境的示例:

bash
cat > /opt/slaunchx/config/app-prometheus/test.env << 'EOF'
# Database
DB_HOST=slaunchx-mysql-test
DB_PORT=3306
DB_NAME=slaunchx
DB_USERNAME=slaunchx
DB_PASSWORD=your-db-password

# Redis
REDIS_HOST=slaunchx-redis-test
REDIS_PORT=6379
REDIS_DATABASE=0
REDIS_PASSWORD=your-redis-password

# RabbitMQ
RABBITMQ_HOST=slaunchx-rabbitmq-test
RABBITMQ_PORT=5672
RABBITMQ_USERNAME=slaunchx
RABBITMQ_PASSWORD=your-rabbitmq-password

# MinIO
MINIO_ENDPOINT=http://slaunchx-minio-test:9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key

# Security
SLAUNCHX_SECURITY_ENCRYPTION_MASTER_KEYS_K1=your-base64-master-key
SLAUNCHX_SECURITY_ENCRYPTION_ACTIVE_KEY_VERSION=K1
SLAUNCHX_SECURITY_ENCRYPTION_HKDF_SALT=your-hkdf-salt
OTP_ENCRYPTION_KEY=your-base64-otp-key

# JVM
JAVA_OPTS=-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200
EOF

# Secure the file
chmod 600 /opt/slaunchx/config/app-prometheus/test.env

配置检查清单

  • [ ] 已设置激活的 profile(SPRING_PROFILES_ACTIVE
  • [ ] 已填写所有数据库连接变量
  • [ ] 已填写所有 Redis 连接变量
  • [ ] 已填写所有 RabbitMQ 连接变量
  • [ ] 已设置 MinIO 端点和凭据
  • [ ] 已生成加密密钥并安全存储
  • [ ] Env 文件权限已限制(chmod 600
  • [ ] 首次部署:已准备初始化引导配置

内部手册