【发布时间】:2019-09-22 07:39:13
【问题描述】:
我正在尝试使用Test Containers 对在 Docker 容器中启动的 HBase 运行集成测试。我遇到的问题对于客户端与 HBase 的交互方式可能有点独特。
当 HBase Master 在容器中启动时,它会将其 hostname:port 存储在 Zookeeper 中,以便客户端可以找到它。在这种情况下,它存储“localhost:16000”。
在我在容器外运行的测试用例中,客户端从 Zookeeper 检索“localhost:16000”并且无法连接。连接失败,因为该端口已被 TestContainers 重新映射到其他随机端口,而不是 16000。
任何想法如何克服这个问题?
(1) 一个想法是找到一种方法告诉 HBase 客户端使用重新映射的端口,忽略它从 Zookeeper 检索到的值,但我还没有找到一种方法来做到这一点。
(2) 如果我能让 HBase Master 在 Zookeeper 中写入外部可访问的 host:port 也可以解决问题。但我不相信容器本身对测试容器如何进行端口重新映射有任何了解。
(3) 也许Test Containers 为这种情况提供了不同的解决方案?
【问题讨论】:
标签: docker hbase testcontainers