2.9 KiB
2.9 KiB
默认 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/main;upstream 新提交:未发现;本地 ahead 提交:787bc3a4 (HEAD -> main) feat(platform): close AI expense value loop;242d68c3 feat(approval): add task workflow and waiver decisions;28b834ed fix(approval): replay immutable action responses;4940ebc4 feat(approval): add safe risk disposition workflow;ee88a36b feat(ai): add tenant-safe hierarchical expense learning;6bdf65bc feat(expenses): add authoritative pre-review workflow;ae3f02c3 feat(expense): add persistent zero-entry receipt association;54754b55 feat(ai): add personal expense application memory;... 另有 10 条。 - 修改:
docker-compose.yml将 PostgreSQL、健康依赖、本机端口和持久卷并入默认启动链路;本地数据库插值改用独立的LOCAL_POSTGRES_*命名空间,避免根.env的外部数据库账号污染 Compose;docker-compose.postgres.yml保留为空兼容覆盖文件。 - 修改:
start.sh与server_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 passed;Ruff、格式、两个 shell 脚本语法、默认/兼容 Compose 配置和git diff --check均通过;重复执行docker compose up -d只保持两个服务运行,没有创建额外容器。 - 验证:
main与postgres均为 healthy;前端代理健康接口返回数据库ok=true;应用实际连接 PostgreSQL 容器地址;本地库为 85 张 public 表、105 条员工数据、Alembic head20260717_0028,PostgreSQL 日志无 FATAL/ERROR/PANIC。 - 影响:以后在仓库根目录执行一次默认
docker compose up -d即可同时启动应用和本地数据库,并复用 Compose 管理的数据卷;外部数据库.env配置不再悄悄覆盖本地 Compose 连接。
- Git 提交检查:fetch 成功;upstream