# 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 # ── 监控 ─────────────────────────────────────────────── # Grafana 管理员密码(必填):3000 端口对外开放,不允许用默认 admin/admin GRAFANA_ADMIN_USER=admin GRAFANA_ADMIN_PASSWORD= # ── 可选:Google Play 商店票据校验(不配则保持 disabled)── STORE_VERIFIER=disabled GOOGLE_PLAY_PACKAGE_NAME= GOOGLE_PLAY_SERVICE_ACCOUNT_JSON=