4f38522759
- app/main.py: AdminSPA 纯 ASGI 挂载 /admin(dist 存在=StaticFiles html
+ SPA fallback(非 /admin/api 的 404 回 index.html 200);缺失=503 说明页);
ADMIN_DIST env 覆盖、请求期现势解析(构建后不重启生效/测试可注入)。
/health 分级: {status, tenants:[{slug,status,engine_ok}], domains}——
懒建未就绪 engine_ok=None 不探库;单租户库损坏只 degraded 仍 200,
不让 healthcheck 杀容器。
- host_middleware: /admin 与 /admin/ 前缀豁免租户解析(平台面;/admin-evil
仍 404,前缀精确到斜杠)。
- admin: .env.production VITE_BASE_URL=/admin/(产物资源引用与挂载同源,
单一事实源,不靠构建期 env 注入);package.json 钉 packageManager
pnpm@10.7.1(corepack 与本地同版本)。
- Dockerfile 两阶段: node:20-alpine 构建 admin/dist(corepack 按清单钉版)
→ python:3.13-slim 只带运行时(app/static/seed_profiles/scripts+dist,
含 tzdata 使 TZ 生效)。
- docker-compose: 生产编排(8018/env_file 可缺省/TZ/数据 bind mount/
mem_limit 768m/日志轮转/python urllib healthcheck/restart)。
- .dockerignore 防泄(.env 不进镜像)+ .gitattributes 钉部署文件 LF。
- tests/test_admin_serving.py: 假 dist 夹具 7 例(服务/fallback 边界/
Host 豁免/缺失降级/health 分级含坏库 degraded)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
33 lines
1.2 KiB
Bash
33 lines
1.2 KiB
Bash
# 【生产】环境变量
|
||
#
|
||
# 说明:模板原把通用变量放 .env(全模式加载),但根 .gitignore 的
|
||
# `.env` 规则会误伤 admin/.env——入库文件只有 .env.development /
|
||
# .env.production 两份(Phase 3 终审 I-2 收口)。通用变量因此按
|
||
# "两份都写"纪律维护:改通用项时两文件同步改。
|
||
|
||
# 版本号(vite.config.ts 的 __APP_VERSION__ define)
|
||
VITE_VERSION = 0.1.0
|
||
|
||
# 应用部署基础路径(如部署在子目录 /admin,则设置为 /admin/)
|
||
# Phase 4: 后端把 admin/dist 挂载在 /admin(见 app/main.py AdminSPA),
|
||
# 生产产物资源引用必须同前缀;dev 保持 .env.development 的 /(走 Vite 代理)
|
||
VITE_BASE_URL = /admin/
|
||
|
||
# 权限模式【 frontend 前端模式 / backend 后端模式 】
|
||
VITE_ACCESS_MODE = frontend
|
||
|
||
# 跨域请求时是否携带 Cookie(开启前需确保后端支持)
|
||
VITE_WITH_CREDENTIALS = false
|
||
|
||
# 是否打开路由信息
|
||
VITE_OPEN_ROUTE_INFO = false
|
||
|
||
# 锁屏加密密钥(锁屏入口已摘除——Phase 3 终审 M-1;密钥保留防遗留代码异常)
|
||
VITE_LOCK_ENCRYPT_KEY = s3cur3k3y4adpro
|
||
|
||
# API 地址前缀(生产由反代把 /api 与 /static 指向后端,前端同源相对路径)
|
||
VITE_API_URL = /
|
||
|
||
# Delete console
|
||
VITE_DROP_CONSOLE = true
|