Я пытаюсь использовать тестовые контейнеры для запуска интеграционного теста с HBase, запущенным в контейнере Docker. Проблема, с которой я сталкиваюсь, может быть немного уникальной для того, как клиент взаимодействует с HBase.
Когда мастер HBase запускается в контейнере, он сохраняет свое имя хоста: порт в Zookeeper, чтобы клиенты могли его найти. В этом случае он хранит «localhost: 16000».
В моем тестовом примере, запущенном вне контейнера, клиент получает «localhost: 16000» из Zookeeper и не может подключиться. Соединение завершается сбоем, потому что порт был переназначен TestContainers на какой-то другой случайный порт, отличный от 16000.
Любые идеи, как это преодолеть?
(1) Одна из идей состоит в том, чтобы найти способ указать клиенту HBase использовать переназначенный порт, игнорируя значение, полученное от Zookeeper, но мне еще предстоит найти способ сделать это.
(2) Если бы я мог заставить HBase Master записать внешне доступный хост: порт в Zookeeper, это также решило бы проблему. Но я не верю, что сам контейнер знает, как Test Containers выполняет переназначение портов.
(3) Возможно, Test Containers предлагает другое решение для подобных ситуаций?