Не удается подключиться Node.js с базой данных MySQL Docker в действиях GitHub

#node.js #docker #github-actions

Вопрос:

Для проекта, который я пытаюсь использовать Node.js модульные тесты в действиях GitHub. Но у меня возникли проблемы с подключением Node.js с моей базой данных, работающей в docker (через GitHub).

Это мой рабочий процесс:

 name: Node.js CI on:  push:  branches: [ master ]  pull_request:  branches: [ master ] jobs:  build:  runs-on: ubuntu-latest  # Service containers to run with `runner-job`  services:  # Label used to access the service container  biddify-product-database:  # Docker Hub image  image: robfontys/biddify-product-database:latest  #  ports:  # Opens tcp port 6379 on the host and service container  - 3306:3306  timeout-minutes: 1   strategy:  matrix:  node-version: [12.x, 14.x]  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/  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  - run: npm test  

Когда я запускаю рабочий процесс, это ошибка:

Действия на Github

Поэтому мой вопрос в том, как подключиться Node.js в базу данных MySQL? Является ли IP-адрес контрайнера 127.0.0.1 (локальный хост)?

Комментарии:

1. Вы пробовали использовать имя службы в качестве имени хоста? Так что вместо локального хоста ваш был бы biddify-product-database .

2. @LeadingMoominExpert Да, я уже пробовал это, что привело к этой ОШИБКЕ: getaddrinfo EAI_AGAIN biddify-product-база данных

3. В вашем коде есть комментарий о порту 6379. Ваш контейнер действительно прослушивает 3306-й?

Ответ №1:

Вам нужно дождаться полного запуска контейнера Docker, поэтому вам нужно добавить режим сна на достаточное количество времени. Я обнаружил, что 2 минут более чем достаточно для небольших проектов. Попробуйте выполнить следующее:

 name: Node.js CI  on:  push:  branches: [ master ]  pull_request:  branches: [ master ]  jobs:  build:  runs-on: ubuntu-latest  uses: actions/setup-node@v2  with:  node-version: ${{ matrix.node-version }}  cache: 'npm'  - run: npm install  - run: npm run build --if-present  - run: docker-compose up -d biddify-product-database  - name: Sleep for 120 seconds  uses: jakejarvis/wait-action@master  with:  time: '120s'  - run: npm test