1 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
Informix 的 docker 鏡像配置錯(cuò)誤。在 docker 容器中啟動(dòng)的服務(wù)器只會(huì)監(jiān)聽主機(jī)名,而不是本地主機(jī)。Testcontainers 使用“l(fā)ocalhost”作為網(wǎng)絡(luò)接口來連接到您的容器。因此,當(dāng)您使用.withExposedPorts(9088)該端口時(shí),該端口實(shí)際上并未暴露在 TestContainers 可以連接到的網(wǎng)絡(luò)接口上。
這就是為什么即使您等待日志消息,您仍然很可能遇到問題,您也在端口上等待并且它永遠(yuǎn)不可用。
好消息是,這個(gè)問題現(xiàn)在已經(jīng)修復(fù),可以通過下載最新的 Informix docker 鏡像來使用
ibmcom/informix-developer-database:latest獲取最新的 14.10 docker 鏡像
下面是我運(yùn)行的代碼,用于驗(yàn)證新圖像是否與 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));
}
}
}
}
}
添加回答
舉報(bào)