Я запускаю экземпляр док-станции для ноутбука Jupyter (https://github.com/jupyter/docker-stacks/tree/master/all-spark-notebook), и я установил py2neo на нем.Подключение экземпляра докера с записью python для экземпляра docker с Neo4J
Я также запускаю контейнер для докеров с Neo4J, установленный с портами 7474.
Проблема в том, что я не могу подключиться к интерфейсу REST док-станции Neo4J от док-станции для ноутбука. Я думаю, что проблема связана с определением localhost.
Что сработало до сих пор. Я использовал только докер Neo4j и начать местный ноутбук (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')
тот же код не работает в ноутбуке, который работает в отдельном контейнере Докер, так как определение локального хоста не такой же. Но теперь я не понимаю, что это должно быть:
Я использовал докер инспектировать на контейнере Neo4j и использовал следующие два в попытке найти адрес, соответствующий мой локальный хост:
- "Шлюз": "xxx.yy.42.1"
- "IPAddress": "xxx.yy.0.3"
Но оба они приводят к ClientError: 401 Unauthorized
Любое предложение о том, как преодолеть эту проблему? (Обратите внимание, что моя текущая версия докер является 1.7.1, таким образом, не поддерживает сеть, но я мог бы, очевидно, обновление, если это необходимо.)
http://stackoverflow.com/questions/28224779/socketerror-connection-refused-using-py2neo-to-a-remote-server, кажется, связаны. Один из ответов говорит о том, что может возникнуть проблема с функцией аутентификации. Мы взглянули с Wireshark, и запрос, отправленный с экземпляра докера, не содержит идентификационной информации, а из локального портала python, который он правильно имеет. – DDW
Вы можете попробовать отключить аутентификацию Neo4j для подтверждения, если это проблема. Установите 'dbms.security.auth_enabled = false' в conf/neo4j-server.properties –