如果 Testcontainers 在拉取镜像时失败,尚未创建的容器上的 withEnv 设置帮不上忙。这次从仓库下载是由 Docker 守护进程在容器存在之前执行的。

失败的操作需要检查的代理配置
镜像拉取测试所使用的 Docker 守护进程及其 仓库路由
在运行中的容器内部下载该容器中应用所支持的输入
Java 测试连接 Docker 或应用发起该连接的 Java 客户端

对于第二种情况,请把环境变量加到现有的 GenericContainer 定义上:

container
    .withEnv("http_proxy", "http://proxy.example:8080")
    .withEnv("https_proxy", "http://proxy.example:8080");

如果允许容器内部下载使用公共 HTTP 端点,请从 HTTP 代理列表 填充这些值。镜像中的程序必须读取这些变量。它们不会把任意数据库套接字变成 HTTP 代理流量。端点还必须能从容器内访问:其 127.0.0.1 指的是容器自身。

对于第一种情况,请找出 Testcontainers 实际使用的 Docker 环境。远程守护进程或 Docker Desktop 可能从与本地 dockerd 不同的来源读取配置。在添加宽泛的代理默认值时,请让本地测试服务和 Docker API 保持在其预期路径上。

相关文章