树莓派Docker部署Neo4j 浏览器端无法执行查询报错求助
新手求助:无法通过浏览器连接操作Neo4j数据库
问题描述
- 部署环境:树莓派上通过Portainer管理Docker容器,部署最新版Neo4j,容器基础运行状态正常
- 容器内操作验证正常:可通过Portainer打开容器终端执行命令,能查看到2个数据库,可正常执行Cypher命令,已成功导入示例Movie数据集条目;通过容器内Cypher Shell可正常执行所有查询操作
- 浏览器端访问异常:可正常打开
http://localhost:7474/browser/,:play movie-graph引导内容可正常加载,但存在如下异常:- 执行电影数据导入查询时报错:
ERROR: Neo.DatabaseError.General.UnknownError - 执行
:sysinfo命令无返回结果 - 输入行光标显示为
$符号,而非正常的数据库名称标识 - 左侧Database菜单下无任何数据库条目
- 执行电影数据导入查询时报错:
容器配置信息
IMAGE neo4j:latest@sha256:b91a4a85afb0cec9892522436bbbcb20f1d6d026c8c24cafcbcc4e27b5c8b68d CMD neo4j ENTRYPOINT tini -g -- /startup/docker-entrypoint.sh ENV JAVA_HOME /usr/local/openjdk-11 JAVA_VERSION 11.0.15 LANG C.UTF-8 NEO4J_AUTH none NEO4J_dbms_connector_bolt_advertised__address localhost:7687 NEO4J_dbms_connector_http_advertised__address localhost:7474 NEO4J_dbms_connector_https_advertised__address localhost:7473 NEO4J_EDITION community NEO4J_HOME /var/lib/neo4j NEO4J_SHA256 34c8ce7edc2ab9f63a204f74f37621cac3427f12b0aef4c6ef47eaf4c2b90d66 NEO4J_TARBALL neo4j-community-4.4.8-unix.tar.gz PATH /var/lib/neo4j/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
报错截图


问题原因&修复方案
核心问题是Bolt连接器的公告地址配置错误。
你当前配置的NEO4J_dbms_connector_bolt_advertised__address=localhost:7687中,localhost是Docker容器内部的回环地址,仅容器内部进程可访问。Neo4j浏览器加载完静态页面后,会通过Bolt协议和数据库建立长连接执行查询,此时浏览器拿到的连接地址是容器内的localhost,无法从浏览器所在的环境(树莓派宿主机/其他局域网访问设备)连通,就会出现无数据库列表、执行查询报未知错误、提示符变成$的现象——本质是浏览器根本没成功连上数据库的Bolt端口。容器内Cypher Shell直接走本地进程通信不受该配置影响,所以能正常操作。
修复操作步骤:
- 停止当前运行的Neo4j容器
- 修改对应环境变量:
- 如果仅在树莓派本地访问浏览器,将
NEO4J_dbms_connector_bolt_advertised__address的值改为0.0.0.0:7687 - 如果需要从局域网内其他设备访问,将该值改为树莓派的实际局域网IP+7687端口,例如
192.168.1.20:7687
- 如果仅在树莓派本地访问浏览器,将
- 确认容器端口映射配置正确,需同时映射两个端口:容器7474端口映射到宿主机7474(供HTTP页面访问),容器7687端口映射到宿主机7687(供Bolt协议连接)
- 重启容器,清空浏览器缓存后重新访问浏览器页面,连接时确认Bolt地址匹配你配置的公告地址,即可正常执行查询、查看数据库列表。
内容的提问来源于stack exchange,提问作者user19416039
相关产品推荐
相关产品推荐

