【发布时间】:2020-09-06 20:38:42
【问题描述】:
我想运行一个通过 Docker 运行 ES 映像的容器测试。 经过一番研究,我找到了https://www.testcontainers.org/,他们也有一个内置的ES module。
因为我的开发环境在端口 9200 和 9300 中使用 ES,所以我更喜欢使用其他端口进行测试,比如 1200 和 1300。 因此,要从 CLI 运行 docker 映像,我使用以下命令:
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)。
使用**waitingFor** 命令运行 start() 行会抛出 Container startup failed 错误
另一个问题,我如何知道测试容器中的架构(http 或 https)?
【问题讨论】:
标签: java docker elasticsearch testcontainers