#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
Когда я запускаю рабочий процесс, это ошибка:
Поэтому мой вопрос в том, как подключиться 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