我正在运行一个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对应的地址:
但他们都导致ClientError: 401 Unauthorized
有关如何克服此问题的任何建议? (请注意,我目前的docker版本是1.7.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"