Files
dpb/docker/test-compose.yaml
T

57 lines
2.1 KiB
YAML
Raw Normal View History

# ============================================
# 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