目标
端到端测试跑在共享预发环境,失败难以在本地复现。本配方在 CI 中用 docker compose 启动完整栈并等待健康就绪,避免竞态失败;运行测试后无论成败都执行 down -v 清理容器与数据卷,保证可重复;提醒需随机化端口以避免冲突。
步骤要点
- 启动完整栈并轮询健康端点等待就绪。
- 运行测试后始终执行 down -v 清理。
- 随机化主机端口或使用隔离网络避免冲突。
- 确保失败时也清理数据卷。
docker compose up -d --wait
# or poll a readiness endpoint
for i in $(seq 1 30); do curl -fsS http://localhost:8080/health && break; sleep 2; done
排错提示
- 固定端口在 CI 易冲突。
- 残留数据卷会导致脏状态。
- compose 与生产编排不同。
适用边界
- 不适用于大规模多节点拓扑。
- 启动时间会增加 CI 时长。