[英]Testcontainer cannot configure port binding
我正在使用 testcontainer 版本1.15.2
。 测试在 windows 10 上的 intellij 中运行。我有一个wiremock 容器。 默认情况下,它侦听端口8080
。 我想 map 这个端口让我们说8081
。 所以我这样做:
public WiremockContainer() {
super("wiremock/wiremock:2.9.0-alpine");
self()
.waitingFor(Wait.forLogMessage(".*port:\\s*8080.*", 1)
.withStartupTimeout(Duration.ofSeconds(25L)))
.withCreateContainerCmdModifier(cmd -> cmd.getHostConfig()
.withPortBindings(new PortBinding(Ports.Binding.bindPort(8081), new ExposedPort(8080)))
)
.withNetworkAliases("wiremock")
.withExposedPorts(8081);
}
创建容器时,它会侦听随机端口,而不是8081
[1]。 我究竟做错了什么? 我应该怎么做才能让容器监听8081
而不是随机端口?
[1]
http://wiremock:8081
上连接并不断收到Connection refused
.waitingFor((...)forPort(8081)(...)));
发生超时。您不能选择在主机上使用哪个实际端口。 TestContainers 会自动选择一个并通过容器实例上的getMappedPort(containerPort)
方法访问它。 如果您只有一个,您也可以使用getFirstMappedPort()
。
Integer hostPort = container.getMappedPort(8080);
Integer hostPort = container.getFirstMappedPort();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.