Janusgraph docker 通过 docker net 连接到 cassandra docker 和 elasticsearch docker,并将 8182 暴露给主机?

Janusgraph docker connect to cassandra docker and elasticsearch docker by docker net, and expose 8182 to host machine?

我正在使用 janusgraph。我已经构建了一个 janusgraph 图像。我要的是运行这个janusgraph容器,同时连接cassandra容器和elasticsearch容器,最后暴露8182端口给宿主机。

我的问题是:如何让janusgraph通过ip和9042端口连接cassandra,通过ip和9200/9300端口连接elasticsearch?

首先,您需要 EXPOSE 您的 Docker 文件中的那些端口。您的 Docker 文件是您还需要为 Cassandra 集群端点定义 ARG 的地方。

Docker文件:

# 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 执行 regex/replace:

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。