我想在网络上运行带有testcontainers的容器。我的容器包含一个spring应用程序,它有一个执行器端点来表示它的状态,它处于:
/actuator/health
我的容器如下所示:
private final static Network network = Network.newNetwork();
private static final GenericContainer<?> myContainer = new GenericContainer<>("mycontainer:latest")
.withExposedPorts(8443)
.withNetwork(network)
.withNetworkAliases("myContainer")
.withClasspathResourceMapping("certs", "/app/certs", BindMode.READ_ONLY)
.withClasspathResourceMapping("config", "/app/config", BindMode.READ_ONLY)
.withLogConsumer(new Slf4jLogConsumer(log))
.waitingFor(Wait.forHttp("/actuator/health").usingTls());
但是当我启动这个容器时,我得到以下错误:
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for URL to be accessible (https://localhost:33092/actuator/health should return HTTP [200])
at org.testcontainers.containers.wait.strategy.HttpWaitStrategy.waitUntilReady(HttpWaitStrategy.java:214)
at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:890)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:441)
... 68 more
但是如果我 curl 这个url(在这个例子中: https://localhost:33092/actuator/health
)在容器内的应用程序启动后,我正在等待评估,得到如下结果:
HTTP Status Code: 200
{
"status": "UP"
}
我错过了什么?有什么想法吗?是虫子吗?
1条答案
按热度按时间klr1opcd1#
好吧,那你得把问题分解了。
我刚刚构建了一个带有依赖项的示例spring boot应用程序,并将其打包到一个映像中:
没别的,我从网上下载的https://start.spring.io/
以下测试类有效(我以您的代码为例):
我也可以在system.out.println上暂停,而curl也可以工作
我现在真的没有一个直接的猜测在你的情况下发生了什么,但你必须分解你的问题一层一层(摆脱tls,网络等)或建立它从零开始与最简单的图像和添加功能一个接一个。