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