docs(config): 补 .env.example 并修正 .gitignore 误伤模板

.gitignore 的 `.env.*` 会把 `.env.example` 一起排除,等于把变量清单挡在仓库外,
接手的人只能翻 application.yml 逐个猜要配什么。加 `!.env.example`(含
`.sample`、`.template`)例外,规则顺序放在忽略之后。

同时补 .env.example:从 application.yml 与代码里实际提取 20 个变量,分组注明
默认值与是否必须替换。三个必改项(DB_PASS 无默认、GATEWAY_TOKEN 占位、
BIZ_TOKEN_SECRET 与 BIZ_PII_KEY 为 dev-only)单独标出。

本文件只放占位值;真实的 .env 仍不入库。另注明工程不自动读 .env
(未引入 dotenv),必须由启动脚本加载或 docker compose --env-file 注入——
这一条不说清,会有人建了 .env 直接启动然后发现 DB_PASS 还是缺。
This commit is contained in:
aomin committed 2026-11-13 17:38:08 +08:00
1 parent a7605ef8b8
commit 983191628e
6 files changed
+109 -5

No files matched your search

+76
View File
@@ -0,0 +1,76 @@
# =============================================================
# 环境变量清单(模板)
#
# 用法:复制成 .env,按需修改,然后由启动脚本注入。
# cp .env.example .env
#
# 注意:本工程**不会自动读取 .env 文件**(未引入 dotenv),
# Spring Boot 只认进程环境变量。所以 .env 必须被"加载"进去:
#
# Linux/macOS: set -a; . ./.env; set +a; java -jar target/aomin-gateway-*.jar
# Windows cmd: for /f "usebackq tokens=1,* delims==" %i in (".env") do set %i=%j
# 容器: docker compose --env-file .env up -d
#
# 真实的 .env **不入库**(.gitignore 已挡)。本文件只放占位值。
# 新增变量时同步本文件,否则接手的人不知道要配什么。
# =============================================================
# ---------- 数据库 ----------
# DB_PASS 是唯一必填项。留空或缺失时应用立即退出(退出码 1),
# 不会带空口令去连库,也不会回退到任何内置口令。填了真实值也别提交。
DB_PASS=
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=aomin_dev
# 开发机常用 root;生产必须换成只有 DML 权限的业务账号
DB_USER=root
# ---------- Redis(仅作锁与缓存,非数据源) ----------
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# ---------- 日志 ----------
LOG_DIR=./logs
# ---------- 内部接口鉴权(/internal/**) ----------
# 默认关闭签名校验,仅靠来源网络闸防护。上线前必须改为 true。
GATEWAY_AUTH_ENABLED=false
# 共享密钥。J-00 §1.2 的签名公式里 key 就是它。
# 当前值是占位值,生产必须替换;留空则签名校验必然失败。
GATEWAY_TOKEN=
# 来源网络闸,与签名开关独立,默认开。
# 签名可以晚点开,网络闸必须一开始就有——两个都关,/internal/** 就是裸奔。
GATEWAY_NETWORK_GUARD=true
# ---------- 业务安全 ----------
# 家属端 token 的签名密钥。占位值 dev-only-change-me-2026 仅用于本机。
BIZ_TOKEN_SECRET=
# 身份证等 PII 字段的加密密钥。占位值 dev-only-pii-key-2026 仅用于本机。
# 换密钥会导致已入库的密文无法解密,上线后不要再改。
BIZ_PII_KEY=
# ---------- 短信 ----------
# demo=true 时不真发短信,只落库并在响应里回显验证码
BIZ_SMS_DEMO=true
BIZ_SMS_ECHO=true
# 同一手机号在此窗口内的短信合并为一条
BIZ_SMS_MERGE_SECONDS=60
# ---------- 演示数据 ----------
# true 会向数据库播种演示账号与样例数据。**生产环境严禁开启。**
BIZ_DEMO_ENABLED=false
# ---------- 告警 ----------
# 单条告警最大重试次数
ALARM_MAX_TRY=3
# 同一设备此窗口内的推送合并为一次
ALARM_PUSH_MERGE_SECONDS=5
# ---------- 分区维护 ----------
# 定时任务,依赖 Redis 取锁;Redis 不可用时跳过并告警,不影响告警主链
PARTITION_MAINTAIN_ENABLED=true
# ---------- 设备模拟器(demo/sim,仅本地联调用) ----------
# 不属于后端配置,只被 sim_device.py 读取
SIM_BASE=http://127.0.0.1:8080
SIM_PORT=9901