应用配置
后端平台使用分层配置系统。理解这些层级至关重要——配置错误是部署失败最常见的原因。
配置层级(优先级顺序)
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_HOST | slaunchx-mysql-test | 使用 Docker 容器名,非 IP |
DB_PORT | 3306 | Docker 内部端口,非宿主机映射端口 |
DB_NAME | slaunchx | 主数据库名 |
DB_USERNAME | slaunchx | 应用用户 |
DB_PASSWORD | (secret) |
已知问题:变量命名
dev profile 使用 DB_USER 和 RABBITMQ_USER,而其他 profile 使用 DB_USERNAME 和 RABBITMQ_USERNAME。请务必检查目标 profile 使用的变量名。使用错误的名称会导致静默回退到默认凭据。
Redis
| 变量 | 示例 | 说明 |
|---|---|---|
REDIS_HOST | slaunchx-redis-test | 容器名 |
REDIS_PORT | 6379 | 内部端口 |
REDIS_DATABASE | 0 | 数据库索引 |
REDIS_PASSWORD | (secret) |
RabbitMQ
| 变量 | 示例 | 说明 |
|---|---|---|
RABBITMQ_HOST | slaunchx-rabbitmq-test | 容器名 |
RABBITMQ_PORT | 5672 | AMQP 端口 |
RABBITMQ_USERNAME | slaunchx | 见上方命名警告 |
RABBITMQ_PASSWORD | (secret) |
安全与加密
| 变量 | 示例 | 说明 |
|---|---|---|
SLAUNCHX_SECURITY_ENCRYPTION_MASTER_KEYS_K1 | (base64) | AES-256 密钥,32 字节 base64 编码 |
SLAUNCHX_SECURITY_ENCRYPTION_ACTIVE_KEY_VERSION | K1 | 当前激活的主密钥 |
SLAUNCHX_SECURITY_ENCRYPTION_HKDF_SALT | (hex) | HKDF 密钥派生盐值 |
OTP_ENCRYPTION_KEY | (base64) | 32 字节密钥,用于 OTP 密钥加密 |
加密密钥
这些密钥保护用户的静态数据。丢失主密钥意味着丢失所有加密数据的访问权限。 请安全备份这些值,永远不要以明文形式存储在版本控制中。
对象存储(MinIO)
| 变量 | 示例 | 说明 |
|---|---|---|
MINIO_ENDPOINT | http://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_KEY | Cloudflare Turnstile | 机器人防护 |
STRIPE_API_KEY | Stripe | 支付处理 |
TRON_RPC_ENDPOINT | TRON | 区块链访问 |
SOLANA_RPC_ENDPOINT | Solana | 区块链访问 |
JVM 配置
通过 JAVA_OPTS 环境变量设置 JVM 选项:
bash
-e JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"| 环境 | 推荐 Xms | 推荐 Xmx |
|---|---|---|
| test | 256m | 512m |
| alpha | 512m | 1024m |
| product | 1024m | 2048m |
平台使用 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) - [ ] 首次部署:已准备初始化引导配置