57 lines
2.1 KiB
YAML
57 lines
2.1 KiB
YAML
# ============================================
|
||||
|
|
# 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/tests:DATABASE_NAME=dpb_test(conftest 自动建库)
|
|||
|
|
# # 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_test(docker-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
|