Skip to content

chore(prisma): prisma.config.ts 统一环境加载(NODE_ENV 分文件 + 迁移镜像收口) - #38

Merged
youdingtianzhaogeyinzuo merged 1 commit into
developfrom
feat/prisma-config-env-unify
Sep 11, 2026
Merged

youdingtianzhaogeyinzuo merged 1 commit into
developfrom
feat/prisma-config-env-unify

Conversation

@Cho-Geer

Copy link
Copy Markdown
Owner

变更文件清单(4 个)

  1. prisma.config.ts(新增):按 NODE_ENV ∈ {development, test, production}(缺省 development)加载 <仓库根>/.env.<NODE_ENV>;文件缺失仅告警不阻断。
  2. package.json:devDependencies 新增 dotenv@^16.6.1(npm install 时自动把 dependencies 中 @keyv/redis 按字母序归位,纯顺序调整无功能变化)。
  3. package-lock.json:对应 dotenv 依赖锁定。
  4. Dockerfile.migrate:新增 COPY prisma.config.ts ./(收口到迁移镜像,镜像内 NODE_ENV=production 且无 env 文件 → 走 warn 容错路径)。

设计要点

  • warn 容错:CI 与迁移容器没有 env 文件,变量由 workflow env / compose env_file 注入;.env.<NODE_ENV> 缺失只打印 [prisma.config] 环境文件不存在 ... 不阻断。
  • 优先级:dotenv 默认 override:false → 进程内已有变量(CI/容器注入)永远优先于文件。
  • package.json prisma.seed 保留为兜底:CLI 检测到 config 后以 config 为准(运行时会打印 deprecation warn,属预期,Prisma 7 将移除 package.json prisma 属性)。
  • 镜像收口(案B):Dockerfile.migrate COPY prisma.config.ts,生产规则与本地一致。

已过验证门

  • npm run typecheck → 0
  • npx prisma version(本地 .env.development 存在)→ 0,无缺失告警
  • NODE_ENV=production npx prisma version → stderr 出现 [prisma.config] 环境文件不存在 ... .env.production 且退出码 0
  • npm run prisma:generate(含 .env.development 临时改名干净环境)→ 缺失告警 + 退出码 0,文件已恢复
  • npm run db:reset(守卫:host 为 localhost 且可达)→ 0,含 Running seed command + 种子摘要
  • npm run prisma:seed → 0,种子摘要一致(已存在数据跳过,幂等)
  • docker build -f Dockerfile.migrate -t booking-migrate:config-smoke . → 0
  • docker run --rm booking-migrate:config-smoke npx prisma version → stderr 环境文件不存在: /app/.env.production (NODE_ENV=production) 且退出码 0(设计内状态,未打印任何 DATABASE_URL)

CI 说明

  • 本 PR 为 draft,若 CI 未触发属预期;合并前需确认 Backend CI 绿。

load .env.<NODE_ENV> (default development) with warn-only missing-file behavior for CI/containers

keep package.json prisma.seed as fallback (config takes precedence)

COPY prisma.config.ts into migrate image for unified prod rules
@Cho-Geer
Cho-Geer marked this pull request as ready for review September 11, 2026 08:30
@Cho-Geer Cho-Geer self-assigned this Sep 11, 2026
@youdingtianzhaogeyinzuo
youdingtianzhaogeyinzuo merged commit 7b2f225 into develop Sep 11, 2026
3 checks passed
@Cho-Geer
Cho-Geer deleted the feat/prisma-config-env-unify branch September 12, 2026 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants