Neo4j和Gephi Graph Streaming插件:连接被拒绝

4
我正在尝试使用Gephi(https://gephi.org/)的图形流插件和Neo4j(通过docker)连接Neo4j,使用Neo4j的APOC过程,如此处所述:https://tbgraph.wordpress.com/2017/04/01/neo4j-to-gephi/。我已经在Gephi中安装了所需的插件,在neo4j中添加了apoc过程,并添加了所需的安全配置,以使apoc过程正常工作。因此,neo4j.conf包含以下行:dbms.security.procedures.unrestricted=apoc.\*

然而,当我在控制台中输入以下查询时:

MATCH path = (:Person)-[:KNOWS]->(:Person)
CALL apoc.gephi.add(null,'workspace1',path,'weight') yield nodes
return *

I get

Neo.ClientError.Procedure.ProcedureCallFailed: Failed to invoke procedure `apoc.gephi.add`: Caused by: java.net.ConnectException: Connection refused (Connection refused)

我也尝试用 https://localhost:8443http://localhost:8080 替换第一个空值 (即服务器 URL),但我仍得到相同的异常。Gephi Graph Streaming 插件服务器同时在 8080 和 8443 上监听。我不知道如何进一步排除问题。
编辑:
关于 Docker,我正在使用自定义镜像,在基本的 neo4j 镜像上添加了 apoc。
# Adding APOC

FROM neo4j:3.3

ENV APOC_URI https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/3.3.0.1/apoc-3.3.0.1-all.jar

RUN apk add --no-cache --quiet curl

RUN mv plugins /plugins \
    && ln -s plugins /plugins

RUN curl --fail --silent --show-error --location --output apoc-3.3.0.1-all.jar $APOC_URI \
    && mv apoc-3.3.0.1-all.jar /plugins

RUN apk del curl

EXPOSE 7474 7473 7687

CMD ["neo4j"]

我将容器以以下方式运行:

docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
-e NEO4J_dbms_security_procedures_unrestricted=apoc.\\\* \
neo4j_apoc:3.3

我能想到的唯一事情就是查看Gephi的日志。那里有什么可以检查的吗? - Rebecca Nelson
啊,你在使用Docker;你用什么来执行它? - Rebecca Nelson
@RebeccaNelson 我已经更新了问题,并添加了Docker信息。 - vicaba
1个回答

4

将--net="host"添加到Docker命令中;在默认配置下,容器的“localhost”并不指向实际的Docker主机。

您正在尝试连接本地主机,但由于默认的Docker网络(一个“bridge”网络)的工作方式,127.0.0.1和localhost都不会指向Docker主机,而是指向容器本身。

仍然可以访问Docker主机,但由于Docker网络是动态的(同一IP地址在容器启动时不保证相同),需要检查默认网关所在的位置,这将是主机的地址。

更简单的解决方法是通过传递--net="host"来切换网络模式,调用Docker即可:

docker run \
--publish=7474:7474 --publish=7687:7687 \
--net="host" \
--volume=$HOME/neo4j/data:/data \
-e NEO4J_dbms_security_procedures_unrestricted=apoc.\\\* \
neo4j_apoc:3.3

这将从“桥接”模式切换到“主机”模式,容器直接使用主机的网络堆栈。此时,localhost和127.0.0.1都将指向Docker主机(以及容器本身)。
请注意,此模式会破坏网络的“容器化”效果;在容器中打开的任何端口也将在Docker主机上打开。

对于docker-compose,请添加指令network_mode: "host" - secavfr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接