Files
X-Financial/document/development/2026-07-17/dev-logs/bugs/default-compose-local-postgres-lifecycle.md

2.9 KiB
Raw Permalink Blame History

默认 Compose 未统一管理本地 PostgreSQL

日期2026-07-17 文档路径document/development/2026-07-17/dev-logs/bugs/default-compose-local-postgres-lifecycle.md

修复记录

  • 22:47记录 bug 修复:默认 Compose 未统一管理本地 PostgreSQL。bug-log:787bc3a4
    • Git 提交检查fetch 成功upstream origin/mainupstream 新提交:未发现;本地 ahead 提交787bc3a4 (HEAD -> main) feat(platform): close AI expense value loop242d68c3 feat(approval): add task workflow and waiver decisions28b834ed fix(approval): replay immutable action responses4940ebc4 feat(approval): add safe risk disposition workflowee88a36b feat(ai): add tenant-safe hierarchical expense learning6bdf65bc feat(expenses): add authoritative pre-review workflowae3f02c3 feat(expense): add persistent zero-entry receipt association54754b55 feat(ai): add personal expense application memory... 另有 10 条。
    • 修改:docker-compose.yml 将 PostgreSQL、健康依赖、本机端口和持久卷并入默认启动链路本地数据库插值改用独立的 LOCAL_POSTGRES_* 命名空间,避免根 .env 的外部数据库账号污染 Composedocker-compose.postgres.yml 保留为空兼容覆盖文件。
    • 修改:start.shserver_start.sh 在读取 .env 前保存并在读取后恢复完整 PostgreSQL 运行参数,保证 Compose 注入的 host、port、database、user、password 和 URL 始终优先;test_env_file_precedence.py 增加根脚本、后端脚本和默认 Compose 回归。
    • 操作:先将旧库备份到 /tmp/x-financial-local-pre-compose-20260717.dump,再把旧卷只读复制到 Compose 管理的 x-financial_postgres-data;旧卷未删除。统一本地开发角色凭据后执行 docker compose up -d,迁移前置检查从 unversioned/base 通过并升级到 20260717_0028
    • 过程披露:第一次 Compose 重建暴露环境优先级问题时,主容器仍沿用了根 .env 指向的外部数据库,并按既有启动流程将其从 20260716_0006 升级到 20260717_0028;迁移日志无失败,未对外部库执行回滚。修复后已确认当前主容器只连接本地 PostgreSQL 容器。
    • 验证:容器内定向测试 107 passedRuff、格式、两个 shell 脚本语法、默认/兼容 Compose 配置和 git diff --check 均通过;重复执行 docker compose up -d 只保持两个服务运行,没有创建额外容器。
    • 验证:mainpostgres 均为 healthy前端代理健康接口返回数据库 ok=true;应用实际连接 PostgreSQL 容器地址;本地库为 85 张 public 表、105 条员工数据、Alembic head 20260717_0028PostgreSQL 日志无 FATAL/ERROR/PANIC。
    • 影响:以后在仓库根目录执行一次默认 docker compose up -d 即可同时启动应用和本地数据库,并复用 Compose 管理的数据卷;外部数据库 .env 配置不再悄悄覆盖本地 Compose 连接。