Я хочу запустить тесты контейнера, которые запускают образ ES через Docker. После некоторого исследования я обнаружил https://www.testcontainers.org/, и у них также есть встроенный ES-модуль.
Поскольку моя среда разработки использует ES в портах 9200 и 9300, я предпочитаю использовать для своих тестов другие порты, скажем, 1200 и 1300. Поэтому для запуска образа докера из интерфейса командной строки я использую эту команду:
docker run -p 1200:9200 -p 1300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2
Я пробовал делать это с помощью тестовых контейнеров, например:
static ElasticsearchContainer esContainer =
new ElasticsearchContainer("docker.elastic.co/elasticsearch/elasticsearch:7.6.2")
.withExposedPorts(1200, 9200)
.withExposedPorts(1300, 9300)
.withEnv("discovery.type", "single-node");
// .waitingFor(Wait.forHttp("/")); // Wait until elastic start – cause an error
@BeforeClass
public static void initEsDockerImage() {
esContainer.start();
esContainer.isRunning();
}
точка останова в esContainer.isRunning ():
порт - 32384, запустите esContainer.getHttpHostAddress()
return localhost / 127.0.0.1: 32847, а также из панели инструментов Docker: в любом случае не удалось установить соединение ES с обоими (1200 и 32384).
запустить строку start () с командой **waitingFor**
, выдает Container startup failed
ошибку
Другой вопрос, как я могу узнать схему (http или https) в тестовых контейнерах?