У меня есть следующая конфигурация контейнера elasti c -search в моем тестовом примере
@Container
public static GenericContainer container = new GenericContainer<>("elasticsearch:7.7.0")
.withExposedPorts(9200,9300).withEnv("discovery.type","single-node")
.withNetwork(Network.newNetwork())
.withNetworkAliases("someNetwork");
В аннотированном методе @BeforeAll я использую свойство url-адреса elasticsearch, подобное этому
System.setProperty("spring.data.elasticsearch.cluster-nodes", container.getContainerIpAddress() + ":" + container.getMappedPort(9300));
From power shell, когда я проверяю запущенные контейнеры (во время паузы отладки тестового примера), я нахожу что-то вроде этого в столбце портов: 0.0.0.0: 32844-> 9200 / tcp, 0.0.0.0:32843->9300/tcp Когда я печатаю container.getContainerIpAddress () + ":" + container.getMappedPort (9300) , я получаю тот же порт, сопоставленный с 9300 в столбце портов контейнера, в данном случае localhost : 32843 , обязательно порт случайный и будет изменяться при каждом новом запуске.
когда код `conf = repo.save (conf); run, я получаю следующее исключение:
Вызвано: org. apache .http.ProtocolException: Недопустимая версия протокола: это не HTTP-порт в организации apache. http.impl.nio.codecs.AbstractMessageParser.parse (AbstractMessageParser. java: 209) в org. * 1 030 * .http.impl.nio.DefaultNHttpClientConnection.consumeInput (DefaultNHttpClientConnection. java: 245) в org. apache .http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch. * 10) . apache .http.impl.nio.client.InternalIODispatch.onInputReady (InternalIODispatch. java: 39) в org. apache .http.impl.nio.reactor.AbstractIODispatch.inputReady (AbstractIODispatch. java: 114) в орг. apache .http.impl.nio.reactor.BaseIOReactor.readable (BaseIOReactor. java: 162) в орг. apache .http.impl.nio.reactor.AbstractIOReactor.processEvent (AbstractIOReactor. java: 337) в орг. apache .http.impl.nio.reactor.AbstractIOReactor.processEvents (AbstractIOReactor. java: 315) в организации apache .http.impl.nio.reactor.AbstractIOReactor. выполнить (AbstractIOReactor. java: 276) в организации apache .http.impl.nio.reactor.BaseIOReactor.execute (BaseIOReactor. java: 104) в организации apache .http.impl.nio. response.AbstractMultiworkerIOReactor $ Worker.run (AbstractMultiworkerIOReactor. java: 591) на java .base / java .lang.Thread. run (Thread. java: 834) Вызвано: org. apache .http.ParseException: недопустимая версия протокола: это не порт HTTP в организации apache .http.message.BasicLineParser.parseProtocolVersion ( BasicLineParser. java: 148) в орг. apache .http.message.BasicLineParser.parseStatusLine (BasicLineParser. java: 366) в орг. apache .http.impl.nio.codecs.DefaultHttpResponseParse DefaultHttpResponseParser. java: 112) в организации apache .http.impl.nio.codecs.DefaultHttpResponseParser.createMessage (DefaultHttpResponseParser. java: 50) в организации apache .http.impl.nio AbstractMessageParser.parseHeadLine (AbstractMessageParser. java: 156) в org. apache .http.impl.nio.codecs.AbstractMessageParser.parse (AbstractMessageParser. java: 207) ... еще 11
`