Files
dpb/docker/test-compose.yaml
34047007@qq.com 86126ea16f checkpoint: 架构治理四件套——统一 async / 测试真 PG / Redis 降级可选 / DPB 扶正
- A1 业务层统一 async:gencode 表内省改 run_sync 异步(不再阻塞事件循环)、
  check_db 改 async_engine、dict_util 启动预热异步载入;psycopg 降为
  APScheduler SQLAlchemyJobStore 专用同步孤岛(注释标注)
- A2 测试真 PG 化:conftest 弃 SQLite + mock Redis,改连真实 PG16(dpb_test)+
  Redis(number_gen advisory lock 路径真被测);新增 docker/test-compose.yaml
  测试依赖栈(postgres:16:5433 + redis:7:6380);run_ci 前置探测 + 容器兜底,
  pytest -m pg 10 套正式 tc 全过(真实 PG16 + Redis)
- B1 Redis 启动不强依赖:redis_connect 失败降级启动,缓存类回源 DB、存储类
  (会话/AI 配置/调度)经 require_redis 守卫返回 503;真机 3 阶段降级测试
  PASS=11 FAIL=0(独立 Redis 6390 + 后端 8091,不动共享 dev 服务)
- C 扶正 DPB:后端横幅/日志(dpb.log)/README/pyproject/ai_factory agent 名、
  前端 package.json/署名注释/链接文案/deploy.sh/docker 注释全部去 fastapiadmin;
  grep backend/app + frontend/web/src 零残留
- 验证:全量回归 pass=72 fail=0
2026-08-07 09:06:19 +08:00

57 lines
2.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================
# DPB 测试依赖 compose —— 供 CI / 本地验收起 PostgreSQL16 + Redis
# ============================================
# 用途:架构治理 A2「测试真 PG 化」。冒烟层(backend/tests)与统计引擎 tc 套件
# 都基于真实 PG + Redis;本栈在隔离端口起容器,避免与宿主机常驻服务(本地 PG
# 5432 / WSL redis 6379)冲突。
#
# 使用方式(在 docker/ 目录):
# docker compose -f test-compose.yaml up -d
# # 后端测试连接默认走 TC_CI_* 覆盖(端口与本栈一致):
# # backend/testsDATABASE_NAME=dpb_testconftest 自动建库)
# # TC_CI_DB_PORT=5433 TC_CI_REDIS_PORT=6380
# # TC_CI_DB_NAME=dpb_test TC_CI_DB_USER=dpb TC_CI_DB_PASSWORD=dpb
# docker compose -f test-compose.yaml down
#
# 无持久化卷:每次 up 都是全新实例,测试库从 init 脚本重建,天然隔离。
# ============================================
services:
postgres:
container_name: dpb-test-postgres
image: postgres:16
restart: "no"
environment:
TZ: "Asia/Shanghai"
POSTGRES_DB: "dpb"
POSTGRES_USER: "${TEST_DB_USER:-dpb}"
POSTGRES_PASSWORD: "${TEST_DB_PASSWORD:-dpb}"
# 仅绑定本机回环;宿主常驻 PG 已占 5432,故测试栈用 5433
ports:
- "127.0.0.1:${TEST_DB_PORT:-5433}:5432"
# 首次初始化时创建测试库 dpb_testdocker-entrypoint 会执行 initdb.d 下脚本)
volumes:
- ./test-initdb/01-create-test-db.sql:/docker-entrypoint-initdb.d/01-create-test-db.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${TEST_DB_USER:-dpb} -d dpb"]
interval: 5s
timeout: 5s
retries: 12
start_period: 15s
redis:
container_name: dpb-test-redis
image: redis:7-alpine
restart: "no"
environment:
TZ: "Asia/Shanghai"
# 宿主/WSL 常驻 redis 已占 6379,故测试栈用 6380;无密码(与 dev .env 一致)
ports:
- "127.0.0.1:${TEST_REDIS_PORT:-6380}:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 12
start_period: 10s