使用python笔记本将docker实例与Neo4J

时间:2015-12-08 16:00:43

标签: neo4j docker ipython-notebook py2neo jupyter-notebook

我正在运行一个Jupyter笔记本泊坞器实例(https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook)并且我已经在其上安装了py2neo。

我还在运行一个装有Neo4J的docker容器,端口7474已暴露。

问题是我似乎无法从笔记本电脑码头连接到Neo4J docker的REST接口。我认为问题与localhost的定义有关。

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

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 并使用了以下两个来尝试查找与我的localhost对应的地址:

  • " Gateway":" xxx.yy.42.1"
  • " IPAddress":" xxx.yy.0.3"

但他们都导致ClientError: 401 Unauthorized

有关如何克服此问题的任何建议? (请注意,我目前的docker版本是1.7.1,因此还不支持网络,但如果必要的话我可以升级。)

1 个答案:

答案 0 :(得分:1)

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

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

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

sudo docker inspect neo4j | grep "Gateway"