为什么:prod profile 下 SWAGGER_ENABLED 默认 false 会把 /doc.html 与 /v3/api-docs 一起关掉, 而 smoke.sh 硬期望这两者 200 —— 照文档默认配置部署完,冒烟必然假失败,会被误判成"部署挂了"; 且联调(10-19)需要 /doc.html 在线可查。 - smoke.sh 自适应:显式 SWAGGER_ENABLED 优先;未设置则自动探测(200+openapi=开、统一信封 code=404=关、其它响应仍 FAIL);关闭时这三项打印 SKIP 而不是 FAIL,开启时照旧断言 200(断言未删) - 新增 SWAGGER_REQUIRED 硬开关:联调环境可要求文档必须在线,不满足直接失败 - .env.example 默认改 SWAGGER_ENABLED=true,并写明该开关一次管两个端点 - DEPLOY.md 同步口径与冒烟说明 - 实测:prod+false 时 SKIP + 其余全 PASS + 退出码 0;prod+true 时两端口 /v3/api-docs 与 /doc.html 均 200; mvn test 83 条全过、两入口 package 通过
37 lines
1.8 KiB
Bash
37 lines
1.8 KiB
Bash
# Author: fruit.com.cn
|
|
#
|
|
# 环境变量样例:复制成 .env 后填真实值(.env 不要提交,已在 .gitignore 里)。
|
|
# 生产用 prod profile 时,下面标「必填」的项缺失/仍是 dev 默认值/长度不足 32 位 → 启动直接失败。
|
|
# 详细说明见 DEPLOY.md。
|
|
|
|
# ── 数据库 ─────────────────────────────────────────────
|
|
# Docker Compose 单机部署:db 是 compose 里的服务名,保持默认即可;
|
|
# 若数据库在别的主机/用云托管,把 DB_URL 换成外部地址。
|
|
DB_NAME=fruitshorts
|
|
DB_URL=jdbc:postgresql://db:5432/fruitshorts
|
|
DB_USER=fruitshorts
|
|
DB_PASSWORD=
|
|
|
|
# ── 密钥(必填,各 32 位以上,且不能用代码里的 dev 默认值)──
|
|
# 生成:openssl rand -base64 48
|
|
JWT_ADMIN_SECRET=
|
|
JWT_APP_SECRET=
|
|
MEDIA_SIGNATURE_SECRET=
|
|
|
|
# ── 生产开关 ───────────────────────────────────────────
|
|
# prod profile 会强制 true(缺了签名则启动失败)
|
|
MEDIA_SIGNATURE_REQUIRED=true
|
|
# 后台前端来源,逗号分隔;生产不许用 *
|
|
CORS_ALLOWED_ORIGINS=https://admin.example.com
|
|
# 媒资根目录:容器里是挂载点
|
|
MEDIA_ROOT_DIR=/data/uploads
|
|
# 是否开放在线接口文档(**/doc.html 与 /v3/api-docs 一起开关**,没有"只留一个"的中间态)
|
|
# true = 前端联调能看到 /doc.html(测试/联调环境建议 true,10-19 前端联调需要它)
|
|
# false = 两个都关闭(生产若不希望暴露 UI 就设 false,机器可读契约也一并关闭)
|
|
SWAGGER_ENABLED=true
|
|
|
|
# ── 可选:Google Play 商店票据校验(不配则保持 disabled)──
|
|
STORE_VERIFIER=disabled
|
|
GOOGLE_PLAY_PACKAGE_NAME=
|
|
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON=
|