You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:00:28