You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境Spring Boot配置Oracle Test Container启动超时问题求助

解决Oracle Test Container启动超时问题

可能的原因与解决方案

1. 增加启动超时时间

Oracle XE容器启动通常需要较长时间,TestContainers默认60秒的超时阈值不足以完成启动,手动设置更长的超时时间:

private synchronized static final OracleContainer getInstance() {
    if (oracleContainer == null) {
        oracleContainer = new OracleContainer(DockerImageName.parse("gvenzl/oracle-xe:18.4.0-slim"))
                // 设置5分钟超时,可根据实际情况调整
                .withStartupTimeout(Duration.ofMinutes(5));
    }
    return oracleContainer;
}

2. 调整Docker资源配置(Windows环境)

Windows下Docker Desktop默认分配的资源可能不足以支撑Oracle数据库启动:

  • 打开Docker Desktop,进入设置 -> 资源
  • 将CPU分配调整为4核以上,内存调整为4GB以上,保存后重启Docker服务

3. 指定稳定的镜像版本

避免使用无版本标签的slim镜像,选择明确的稳定版本(如18.4.0-slim或21.3.0-slim),不同版本的就绪日志输出更稳定,减少匹配失败的概率:

oracleContainer = new OracleContainer(DockerImageName.parse("gvenzl/oracle-xe:21.3.0-slim"))

4. 自定义就绪日志匹配规则

部分Oracle镜像的就绪日志输出与TestContainers默认的.*DATABASE IS READY TO USE!.*\s不匹配,可根据容器实际日志调整匹配规则:

private synchronized static final OracleContainer getInstance() {
    if (oracleContainer == null) {
        oracleContainer = new OracleContainer(DockerImageName.parse("gvenzl/oracle-xe:18.4.0-slim"))
                .withStartupTimeout(Duration.ofMinutes(5))
                // 自定义匹配的就绪日志,根据容器实际输出修改
                .waitingFor(Wait.forLogMessage(".*Database ready to use.*", 1));
    }
    return oracleContainer;
}

5. 检查WSL2网络与资源(Windows WSL2后端)

如果使用WSL2作为Docker后端:

  • 关闭Windows防火墙临时拦截规则,确保Docker网络请求正常
  • 调整WSL2的资源分配,在%UserProfile%\.wslconfig中增加配置:
    [wsl2]
    memory=4GB
    processors=4
    
    保存后重启WSL2服务。

内容的提问来源于stack exchange,提问作者Tohid Makari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:37:13