1 回答
TA贡献1779条经验 获得超6个赞
Informix 的 docker 镜像配置错误。在 docker 容器中启动的服务器只会监听主机名,而不是本地主机。Testcontainers 使用“localhost”作为网络接口来连接到您的容器。因此,当您使用.withExposedPorts(9088)该端口时,该端口实际上并未暴露在 TestContainers 可以连接到的网络接口上。
这就是为什么即使您等待日志消息,您仍然很可能遇到问题,您也在端口上等待并且它永远不可用。
好消息是,这个问题现在已经修复,可以通过下载最新的 Informix docker 镜像来使用
ibmcom/informix-developer-database:latest获取最新的 14.10 docker 镜像
下面是我运行的代码,用于验证新图像是否与 TestContainers 一起更好地工作。
public class DockerTest {
GenericContainer<?>container = new GenericContainer<>("ibmcom/informix-developer-database:latest")
.withExposedPorts(9088, 9089, 27017, 27018, 27883).withEnv("LICENSE", "accept");
@Test
public void testIfxContainer() throws Exception {
container.start();
System.out.println("Informix started");
//test the connection
try(Connection c = DriverManager.getConnection("jdbc:informix-sqli:localhost:" + container.getFirstMappedPort() + "/sysmaster:user=informix;password=your-password")) {
try(Statement s = c.createStatement(); ResultSet rs = s.executeQuery("SELECT FIRST 10 tabname from systables");) {
while(rs.next()) {
System.out.println(r.getString(1));
}
}
}
}
}
添加回答
举报