等待容器端口打开超时(本地主机端口:[32773] 应该正在侦听)

2024-01-02

我正在尝试使用https://github.com/testcontainers/testcontainers-scala https://github.com/testcontainers/testcontainers-scala这是固有的https://www.testcontainers.org/ https://www.testcontainers.org/如下:

final class MessageSpec extends BddSpec
  with ForAllTestContainer
  with BeforeAndAfterAll {


  override val container = GenericContainer("sweetsoft/sapmock").configure{ c =>
    c.addExposedPort(8080)
    c.withNetwork(Network.newNetwork())
  }

  override def beforeAll() {
  }


  feature("Process incoming messages") {  

当我使用命令运行测试时sbt test,我有以下异常:

15:22:23.171 [pool-7-thread-2] ERROR ???? [sweetsoft/sapmock:latest] - Could not start container
org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [32775] should be listening)
        at org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:47)
        at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
        at org.testcontainers.containers.wait.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:23)
        at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
        at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:582)

该图像是本地图像:

docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
sweetsoft/sapmock             latest              f02be90356e7        3 hours ago         664MB
openjdk                       8                   bec43387959a        11 days ago         625MB
quay.io/testcontainers/ryuk   0.2.3               64849fd2d464        3 months ago        10.7MB

问题是,为什么要等待32775港口?港口有什么用?

Update

也许这个日志会有所帮助:

15:47:47.274 [pool-7-thread-4] INFO org.testcontainers.dockerclient.DockerClientProviderStrategy - Found Docker environment with Environment variables, system properties and defaults. Resolved: 
    dockerHost=unix:///var/run/docker.sock
    apiVersion='{UNKNOWN_VERSION}'
    registryUrl='https://index.docker.io/v1/'
    registryUsername='developer'
    registryPassword='null'
    registryEmail='null'
    dockerConfig='DefaultDockerClientConfig[dockerHost=unix:///var/run/docker.sock,registryUsername=developer,registryPassword=<null>,registryEmail=<null>,registryUrl=https://index.docker.io/v1/,dockerConfigPath=/home/developer/.docker,sslConfig=<null>,apiVersion={UNKNOWN_VERSION},dockerConfig=<null>]'

15:47:47.275 [pool-7-thread-4] INFO org.testcontainers.DockerClientFactory - Docker host IP address is localhost
15:47:47.277 [pool-7-thread-4] DEBUG com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: com.github.dockerjava.core.exec.InfoCmdExec@51a07bb5
15:47:47.389 [pool-7-thread-4] DEBUG com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: com.github.dockerjava.core.exec.VersionCmdExec@70fc9b37
15:47:47.392 [pool-7-thread-4] INFO org.testcontainers.DockerClientFactory - Connected to docker: 
  Server Version: 18.09.6
  API Version: 1.39
  Operating System: Ubuntu 18.04.2 LTS
  Total Memory: 7976 MB
15:47:47.395 [pool-7-thread-4] DEBUG com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: ListImagesCmdImpl[imageNameFilter=quay.io/testcontainers/ryuk:0.2.3,showAll=false,filters=com.github.dockerjava.core.util.FiltersBuilder@0,execution=com.github.dockerjava.core.exec.ListImagesCmdExec@562a343]
15:47:47.417 [pool-7-thread-4] DEBUG org.testcontainers.utility.RegistryAuthLocator - Looking up auth config for image: quay.io/testcontainers/ryuk:0.2.3
15:47:47.417 [pool-7-thread-4] DEBUG org.testcontainers.utility.RegistryAuthLocator - RegistryAuthLocator has configFile: /home/developer/.docker/config.json (does not exist) and commandPathPrefix: 
15:47:47.418 [pool-7-thread-4] WARN org.testcontainers.utility.RegistryAuthLocator - Failure when attempting to lookup auth config (dockerImageName: quay.io/testcontainers/ryuk:0.2.3, configFile: /home/developer/.docker/config.json. Falling back to docker-java default behaviour. Exception message: /home/developer/.docker/config.json (No such file or directory)
15:47:47.418 [pool-7-thread-4] DEBUG org.testcontainers.dockerclient.auth.AuthDelegatingDockerClientConfig - Effective auth config [null]

原始的java库已经回答了你的端口问题。
https://www.testcontainers.org/features/networking/ https://www.testcontainers.org/features/networking/

注意这个暴露的端口号是从 容器。

从主机的角度来看,Testcontainers 实际上将其暴露在 随机自由端口。这是设计使然,以避免可能发生的端口冲突 出现在本地运行的软件中或在并行测试运行之间。

因为有这一层间接,所以需要问 运行时实际映射端口的测试容器。这可以做到 使用 getMappedPort 方法,该方法获取原始(容器) 端口作为参数

在 Scala 库中,您可以通过调用获取此映射端口

container.mappedPort(yourExposedPort) 

错误很可能与这个概念有关,您需要提前在 docker 映像中公开该端口。确保您有expose 8080命令位于您的 dockerfile 或用于构建您的任何映像中的某个位置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

等待容器端口打开超时(本地主机端口:[32773] 应该正在侦听) 的相关文章

随机推荐

  • Passenger:无法加载此类文件 ruby​​gems/builder

    我试图用 Apache2 和 ruby 2 0 安装乘客 当我这样做时 我遇到了这一行错误 passenger install apache2 module Error Compiling and installing Apache 2 m
  • 计算 mongoDB 中不同值的数量

    这是mongoDB中的文档结构 id ObjectId 9elesdf3lk3jppefll34d210 category data1 product data id ObjectId 9elesdf3lk3jppefll34d211 ca
  • 如何设置TestNG+Jenkins

    我正在使用 Jenkins 运行一些 testNG 测试 当构建完成后 我最后收到以下消息 INFO Build failures were ignored TestNG Reports Processing START Looking f
  • 卸载 rJava 和/或重新启动 JVM

    我想用rJava结合mcparallel但显然JVM 无法被 fork https stat ethz ch pipermail r devel 2013 November 067960 html 因此 需要为每个子进程启动一个单独的 JV
  • iOS - XML 漂亮打印

    我在我的 iOS 应用程序中使用 GDataXML 并且想要一种简单的方法来格式化和打印 XML 字符串 漂亮打印 有谁知道 Objective C 中的算法 或者可以用我可以翻译的另一种语言运行的算法吗 可以直接修改GData XMLNo
  • 构建失败时未发送 Jenkins 管道电子邮件

    我在管道詹金斯工作中使用以下步骤 step class Mailer notifyEveryUnstableBuild true recipients email protected cdn cgi l email protection s
  • 编译顺序和后置前缀运算符

    我想知道为什么以下输出7 7 6 7代替5 6 6 7 my a 5 printf d d d d a a a a 我很确定这与参数编译的顺序有关 Thanks 在开始之前 让我指出 通常应该避免同时设置和读取表达式中的变量的情况 Firs
  • User.Identity.Name - 哪个程序集引用将其引入您的项目?

    我找不到哪个参考组件用户 身份 名称来自 我怎样才能发现这一点 我需要将其添加到类库而不是我制作的默认 MVC 5 应用程序中 以便我可以访问它 http msdn microsoft com en us library system we
  • 如何在 ASP.NET Web API 上对 Action Filter 进行依赖注入

    我真的很困惑将依赖项注入到 Web api 的操作过滤器中的方法 我有一个像这样的动作过滤器 public class AuthorizationAttribute ActionFilterAttribute public IApiKeyR
  • 在特定集合中创建团队项目的 TFS 权限

    我们的 TFS 2010 服务器中有多个集合 该服务器托管我们所有的 TFS 相关服务 我想允许特定的程序员在他的专用集合中创建团队项目 他属于该集合的 TFS 管理员组 当他尝试创建新的团队项目时 失败并出现报告权限错误 我知道他还需要
  • 如何清除按钮的颜色?

    不仅如何将按钮的颜色清除为默认颜色 而且还要在我的代码中的什么时刻执行此操作 我已经尝试了一切 但没有运气 当我单击按钮时 我设置了一些具有不透明度的绿色 现在 当我单击 下一步 按钮时 也会发生同样的情况 但第一个按钮仍设置为绿色 我需要
  • 未找到默认实体翻译的翻译形式

    我尝试设置翻译表格 http a2lix fr bundles translation form http a2lix fr bundles translation form and https github com Atlantic18
  • 实际问题是什么? MySql?

    Hello 我已经尝试解决这个问题很多天了 但没有解决 我是一个BEGINNER 请为我做一些暗淡的事情 我的问题是什么 从我的角度来看 有很多石头需要翻过去 只需要显示在正确的方向 我已经完全重新启动了计算机并卸载了 mysql 至少 4
  • 传单 - 防止加载 MaxBounds 之外的图块

    我在尝试加载不存在且超出 MaxBounds 的图块时遇到传单问题 jsfiddle 复制我的图块集的问题 https jsfiddle net f2Ljzpbh 1 最后还尝试了以下方法 map setBounds new L LatLn
  • React Native WebView 中的身份验证

    我有一个工作的反应本机应用程序 我想通过添加一个显示的选项卡以灵活的方式扩展它WebView 在这里 用户将能够看到他们的个人资料信息 因此我需要能够对每个用户进行身份验证 我认为这不会很难实现 因为用户已经在应用程序中进行了身份验证 但显
  • Spark 将 DataFrame 作为 HTTP Post 请求的正文发送

    我有一个数据框 我想将其作为正文发送HTTP Post要求 什么是最好的Sparky怎么办 如何控制HTTP请求的数量 如果记录数量变大 有没有办法将发送数据帧拆分为多个 HTTP Post 调用 假设我的数据框是这样的 user id c
  • isInitialized - 此时无法访问 Lateinit var 的支持字段

    我正在尝试检查是否lateinit属性已初始化 在 Kotlin 1 2 中 我们现在有isInitialized方法 当我在声明 Lateinit 属性的类中执行此操作时 它会起作用 但是当我尝试从另一个类调用它时 我收到以下警告 此时无
  • jQuery 窗口滚动事件。每滚动 XX 像素

    我正在使用优秀的 jQuery Reel 插件 http jquery vostrel cz reel http jquery vostrel cz reel 对于一个项目 我想绑定到窗口滚动事件 因此当用户向下滚动页面时 插件前进 1 帧
  • 如何使用 jQuery 滚动到某个元素?

    我希望页面滚动到页面顶部的 div 我有页面其他部分的按钮 但是当我滚动到底部并单击按钮时 这不起作用 它不会转到页面顶部 这是代码笔 https codepen io Filizof pen xygWyp editors 1010 htt
  • 等待容器端口打开超时(本地主机端口:[32773] 应该正在侦听)

    我正在尝试使用https github com testcontainers testcontainers scala https github com testcontainers testcontainers scala这是固有的htt