测试容器将无法启动,但图像可以工作

问题描述 投票:0回答:1

我有一个本地 Docker 存储库,其中包含部署在映像中的应用程序。 我可以使用 docker pull localhost:6000/demo_code_image 从我的容器中提取该图像 并使用 docker run 创建一个容器并对其运行我的黄瓜测试。

但是如果我尝试使用 Tescontainers GenericContainer 我会收到错误:

Container startup failed for image localhost:6000/demo_code_image:latest
org.testcontainers.containers.ContainerLaunchException: Container startup failed for  image localhost:6000/demo_code_image:latest
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:359)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:330)
at coding.example.e2e.LoginTest.setupClass(LoginTest.java:37)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:344)
... 4 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:563)
at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:354)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
... 5 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (127.0.0.1 ports: [32788, 32789] should be listening)
at         org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:112)
at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)
at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:500)
... 7 more

我尝试过谷歌搜索和各种方法来在静态等中使用@Container注释来启动容器

我尝试过的每一种方法都得到完全相同的结果!

我知道图像和存储库可以工作,因为我可以从命令行拉取并运行。 一定是做了一些愚蠢的事情,甚至不能得到不同的错误!

testcontainers opensuse java-21
1个回答
0
投票

解决方案是更改容器就绪的检测。 它正在启动但未被检测到。

.waitingFor(Wait.forLogMessage(".已启动应用程序。", 1))

解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.