0

我有一个连接到 neo4j 的 Node.js 应用程序。运行它正常运行良好,我能够连接。但是,当我在 Docker 中运行它时,我遇到了这个错误:

Neo4jError: Failed to connect to server. Please ensure that your database is listening on the correct host and port and that you have compatible encryption settings both on Neo4j server and driver. Note that the default encryption setting has changed in Neo4j 4.0. Caused by: connect ECONNREFUSED 127.0.0.1:7687
at newError (/usr/src/app/node_modules/neo4j-driver/lib/error.js:75:10)
at NodeChannel._handleConnectionError (/usr/src/app/node_modules/neo4j-driver/lib/internal/node/node-channel.js:229:41)
at Socket.emit (events.js:310:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)

我正在使用 neo4j-driver v4.0.2 和 Neo4j 4.0.3。

我创建了一个 repo 来重现该问题:https ://github.com/Layvier/test_neo4j

我是否缺少有关 Docker 网络的内容?

我发现与 python 驱动程序相关的问题:https ://github.com/neo4j/neo4j-python-driver/issues/251#issuecomment-420160271

谢谢你的帮助 !

4

1 回答 1

1

您的 docker 镜像在一个隔离的网络中运行,因此它无法访问您的 neo4jlocalhost:7687

在您的 javascript 文件中,尝试将您要连接的 url 更改为您的 host-ip 而不是localhost. 你可以通过 running 找到它ip addr show

更好的是,您可以使用--add-host标志将主机映射传递给您的容器 -将主机添加到容器示例

docker run -it --add-host=neo4j:[your-host-ip] user/test-neo4j:latest

然后,您可以使用neo4j而不是localhost在 index.js 中进行连接

于 2020-05-14T23:26:28.960 回答