使用 python 笔记本将 docker 个实例连接到使用 Neo4J 的 docker 个实例

Connecting docker instance with python notebook to docker instance with Neo4J

我是 运行 Jupyter notebook docker 实例 (https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook),我已经在上面安装了 py2neo。

我也是 运行 一个 docker 容器,其中安装了 Neo4J,并暴露了端口 7474。

问题是我似乎无法从笔记本 docker 连接到 Neo4J docker 的 REST 接口。我认为问题与本地主机的定义有关。

到目前为止什么有效。我只使用了 Neo4J docker 并启动了一个本地笔记本(ipython 笔记本)然后以下工作:

import py2neo

from py2neo import Node, Relationship, Graph, authenticate

authenticate("http://localhost:7474", "neo4j", "admin")

graph = Graph('http://localhost:7474/db/data') 

graph.cypher.execute('match (y:Year) return y')

相同的代码在单独的 docker 容器中 运行 的笔记本中不起作用,因为 localhost 的定义不同。但是现在我不明白它应该是什么:

我在 Neo4J 容器上使用了 docker inspect 并使用以下两个试图找到与我的本地主机对应的地址:

但是它们都导致 ClientError: 401 Unauthorized

关于如何克服这个问题有什么建议吗? (请注意,我当前的 docker 版本是 1.7.1,因此尚不支持网络,但如果有必要,我显然可以升级。)

graph = Graph('https://' + username + ':' + pwd + '@' + ip_neo + ':7473 /db/data')

这似乎有效。请注意,您需要端口 7473,这是标准的 HTTPS 端口。使用身份验证的方法没有成功。

对于 ip_neo 我检查了 neo4J docker 实例:

sudo docker inspect neo4j | grep "Gateway"