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

GitHub Actions环境下Node.js无法连接Docker MySQL数据库问题咨询

问题解决方案

连接地址说明

如果你的Node.js测试脚本直接运行在GitHub Actions的Ubuntu宿主机上(没有打包进自定义容器运行),在已经映射3306端口的前提下,数据库连接地址确实为127.0.0.1,不需要使用容器内网IP。如果你的测试是运行在自定义容器内,才需要使用服务名biddify-product-database作为数据库Host。

核心报错原因&修复方案

你遇到的连接失败大概率是以下两个问题导致的:

  • 超时时间过短,且没有预留服务启动时间:MySQL容器首次启动需要执行初始化脚本、创建库表、启动服务,整个过程通常需要10~30秒。你当前设置的全局timeout-minutes: 1时间过短,且启动容器后直接执行测试,数据库还未完成启动就接收连接请求,自然会报错。
  • 数据库认证配置不匹配:你需要确认robfontys/biddify-product-database镜像默认的数据库名、用户名、密码,和测试脚本中配置的参数一致,否则也会连接失败。

修正后的工作流配置

name: Node.js CI
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    services:
      biddify-product-database:
        image: robfontys/biddify-product-database:latest
        ports:
          - 3306:3306
        # 可选:如果需要覆盖镜像默认的数据库配置,可添加env字段
        # env:
        #   MYSQL_DATABASE: 你的库名
        #   MYSQL_USER: 你的用户名
        #   MYSQL_PASSWORD: 你的密码
        #   MYSQL_ROOT_PASSWORD: root账号密码
    # 放宽超时时间,避免服务未启动就被强制终止
    timeout-minutes: 5
    strategy:
      matrix:
        node-version: [12.x, 14.x]
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm run build --if-present
    # 新增步骤:等待MySQL端口可访问后再执行测试
    - name: 等待MySQL服务启动完成
      run: |
        sudo apt-get install -y netcat
        until nc -z 127.0.0.1 3306; do
          echo "等待MySQL启动..."
          sleep 2
        done
    # 可选:如果测试脚本从环境变量读取数据库配置,可在此处统一注入
    # env:
    #   DB_HOST: 127.0.0.1
    #   DB_PORT: 3306
    #   DB_USER: 你的用户名
    #   DB_PASSWORD: 你的密码
    #   DB_NAME: 你的库名
    - run: npm test

额外注意事项

  • 确认你的MySQL镜像没有默认绑定127.0.0.1,如果存在该配置,容器外部将无法访问,需要修改镜像内的MySQL配置允许外部访问。
  • 建议测试代码不要写死数据库配置,优先从环境变量读取,方便适配CI等不同运行环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:07