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

GitHub Actions中Docker服务本地访问失败:socket hang up问题求助

在GitHub Actions中访问Docker容器服务的解决方法

核心排查方向及解决方案

  • 确保服务绑定到0.0.0.0而非127.0.0.1
    容器内的服务如果只绑定127.0.0.1,仅能在容器内部访问,即使做了端口映射,GitHub Actions runner主机也无法连接。需要修改应用代码的监听配置:

    • Node.js示例:app.listen(3000, '0.0.0.0')
    • Python Flask示例:app.run(host='0.0.0.0', port=3000)
    • Java Spring Boot:在配置文件中设置server.address=0.0.0.0
  • 等待服务完全初始化后再发起请求
    docker compose up -d只是启动容器,服务可能还在加载依赖、初始化数据库,直接请求会导致连接失败。可以添加等待逻辑:

    # 循环检测服务健康端点,最多等待30秒
    for i in {1..30}; do
      if curl -s http://127.0.0.1:3000/health; then
        echo "服务已就绪"
        break
      fi
      if [ $i -eq 30 ]; then
        echo "服务启动超时"
        exit 1
      fi
      sleep 1
    done
    

    建议给服务添加/health这类健康检查端点,比直接请求业务接口更可靠。

  • 验证端口映射配置
    检查docker-compose.yml中的端口映射是否正确,确保主机端口和容器端口一致:

    services:
      your-service:
        ports:
          - "3000:3000"  # 左侧是runner主机端口,右侧是容器内服务端口
    
  • 查看容器日志定位问题
    如果以上步骤都没问题,查看容器日志确认服务是否正常启动:

    docker compose logs your-service-name
    

    日志中可能会显示服务启动失败的具体原因,比如端口冲突、配置错误等。

内容的提问来源于stack exchange,提问作者Yu jen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:36:01