用途:当工作涉及集成测试的一次性 Docker 容器时使用,包括数据库、broker、云模拟器、Compose 栈、等待策略、Ryuk 清理或 CI 容器运行时。
工作方式:改代码前先检查本地 Testcontainers 情况,包括语言与包版本(testcontainers、@testcontainers/、Java org.testcontainers:、Python extras、Go modules)、容器运行时(Docker Desktop、Colima、Podman、OrbStack、Rancher、DinD、Testcontainers Cloud)、测试运行器生命周期(Vitest/Jest global setup、JUnit @Container、pytest fixtures、Go CleanupContainer),以及现有模块与手写通用容器、网络、Compose、复用标志。版本不清、语言 API 不同或涉及 CI/运行时/Cloud 时,从 source-map.md 起刷新官方文档,再按 node-core.md、languages.md、modules-catalog.md、ci-runtimes-ops.md 路由到对应参考。优先使用项目语言与已有模块包,不引入第二种语言绑定。先在最小有用边界验证,再验证套件生命周期。
核心判断:有官方模块时优先于 GenericContainer/DockerContainer;始终解析运行时主机与映射端口,不硬编码 localhost:5432 或固定主机端口;锁定镜像标签,避免 CI 用浮动 latest;优先复制进容器而非绑定挂载;多容器用网络与别名做 DNS,避免固定容器名;谨慎选择等待策略,Colima/Rancher 上日志/健康检查等待需配合监听端口等待;CI 中除非环境不支持否则保持 Ryuk 启用;复用仅限本地开发机,CI 不依赖复用;Testcontainers 只用于集成/契约边界,纯单元测试不依赖 Docker;模块主版本与核心匹配;仅用一次性凭证,禁止生产密钥进入容器环境变量。
语言默认:Node/TS 用 testcontainers 与 @testcontainers/<svc> 模块,Java 用 org.testcontainers:testcontainers 与 BOM 2.x,Python 用 testcontainers[extras],Go 用 testcontainers-go 与 modules/<svc>。
验证:优先使用仓库自带命令,覆盖聚焦集成测试、多容器/网络/Compose 冒烟、等待策略失败模式、CI 形态运行、并行检查、Postgres 快照/恢复检查,并报告实际执行与未执行的检查及运行时和版本假设。