【问题标题】:Janusgraph docker connect to cassandra docker and elasticsearch docker by docker net, and expose 8182 to host machine?Janusgraph docker 通过 docker net 连接到 cassandra docker 和 elasticsearch docker,并将 8182 暴露给主机?
【发布时间】:2020-06-06 04:17:43
【问题描述】:
我正在使用 janusgraph。我已经建立了一个janusgraph图像。我想要的是运行这个janusgraph容器,同时连接cassandra容器和elasticsearch容器,最后将8182端口暴露给宿主机。
我的问题是:如何让janusgraph通过ip和9042端口连接cassandra,通过ip和9200/9300端口连接elasticsearch?
【问题讨论】:
标签:
docker
elasticsearch
kubernetes
cassandra
janusgraph
【解决方案1】:
首先,您需要EXPOSE Dockerfile 中的这些端口。您还需要在 Dockerfile 中为 Cassandra 集群端点定义 ARG。
Dockerfile:
# argument for the Cassandra endpoints, with a default value of 127.0.0.1
ARG CASSANDRA_ENDPOINT_LIST=127.0.0.1
# Exposing required ports 8182(gremlin) 9042(Cassandra) 9200(ElasticSearch)
EXPOSE 8182 9042 9200
然后在您的入口点文件中使用sed 进行正则表达式/替换:
sed -i "s/hostname=127\.0\.0\.1/hostname=${CASSANDRA_ENDPOINT_LIST}/g" ${JANUSGRAPH_CONF}/gremlin-server/janusgraph-cql-es-server.properties
在构建 Docker 容器时,将 CASSANDRA_ENDPOINT_LIST 作为构建参数传递:
--build-arg CASSANDRA_ENDPOINT_LIST=1.2.3.4,1.2.3.5
此示例面向 Cassandra,但类似的东西也适用于 ElasticSearch。
注意:您可以在同一个容器中构建所有 3 个,然后您就不需要通过 --build-arg 传递端点。不过,您需要足够的 RAM 来支持 Janus、Elastic 和 Cassandra 的 JVM。