GitHub Actions中配置Neo4j遭遇连接拒绝问题寻求解决方案
GitHub Actions中配置Neo4j遭遇连接拒绝问题寻求解决方案
我在GitHub Actions里配置Neo4j的时候一直碰壁,下面是我YAML文件里和Neo4j相关的配置:
services: neo4j: image: neo4j:5.5.0 ports: - 7474:7474 - 7687:7687 env: NEO4J_USERNAME: "neo4j" NEO4J_PASSWORD: "neo4j" NEO4J_dbms_connector_http_advertised__address: "localhost:7474" NEO4J_dbms_connector_bolt_advertised__address: "localhost:7687"
每次运行都会报这个错误:
/home/runner/.rvm/gems/ruby-3.1.2@myapp/gems/neo4j-ruby-driver-4.4.3/ruby/neo4j/driver/internal/async/connection/channel_connector_impl.rb:34:in `rescue in connect': Connection refused - connect(2) for 127.0.0.1:7687 (Neo4j::Driver::Exceptions::ServiceUnavailableException)
另外我在Rails应用里也复制了配置文件,设置了正确的端口(用的是默认值)。有没有大佬能给点建议?
可能的解决方案
我之前也碰到过类似的问题,给你几个实用的排查方向:
更换服务访问地址:在GitHub Actions的Docker服务网络中,容器之间是通过服务名来通信的,不是
localhost。所以你的Rails应用里,Neo4j的连接地址应该改成neo4j:7687,而不是127.0.0.1:7687。等待Neo4j完全启动:Neo4j启动需要一定时间,很可能你的测试代码在服务还没准备就绪时就发起了连接。可以在测试步骤前添加一段等待脚本,轮询Neo4j的HTTP接口直到它响应正常:
until curl -s http://neo4j:7474 > /dev/null; do echo "等待Neo4j启动..." sleep 5 done调整Neo4j的环境变量配置:你设置的
NEO4J_dbms_connector_bolt_advertised__address为localhost:7687,这会让Neo4j在容器内部只绑定到localhost,导致外部容器无法访问。可以把这个值改成neo4j:7687,或者直接移除这个环境变量,使用Neo4j的默认配置。检查驱动与Neo4j版本兼容性:你使用的Neo4j Ruby Driver是4.4.3,而Neo4j版本是5.5.0,虽然多数场景下兼容,但建议确认官方的版本兼容矩阵。如果存在兼容性问题,可以考虑升级驱动或者降级Neo4j版本。
试试这些方法,应该能解决连接拒绝的问题!
备注:内容来源于stack exchange,提问作者knirirr
相关产品推荐
相关产品推荐

