2015-12-08 7 views
0

Я запускаю экземпляр док-станции для ноутбука 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, таким образом, не поддерживает сеть, но я мог бы, очевидно, обновление, если это необходимо.)

+0

http://stackoverflow.com/questions/28224779/socketerror-connection-refused-using-py2neo-to-a-remote-server, кажется, связаны. Один из ответов говорит о том, что может возникнуть проблема с функцией аутентификации. Мы взглянули с Wireshark, и запрос, отправленный с экземпляра докера, не содержит идентификационной информации, а из локального портала python, который он правильно имеет. – DDW

+0

Вы можете попробовать отключить аутентификацию Neo4j для подтверждения, если это проблема. Установите 'dbms.security.auth_enabled = false' в conf/neo4j-server.properties –

ответ

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

Это похоже на работу. Обратите внимание, что вам нужен порт 7473, который является стандартным портом HTTPS. Не удастся получить подход с аутентификацией для работы.

Для ip_neo я проверить экземпляр Neo4j Docker:

sudo docker inspect neo4j | grep "Gateway"