Задать вопрос

Как правильно подключить MySQL в Docker и подключиться к БД в Node?

Возникла проблема, начал изучать докер, развернул в yml mysql + node, пытаюсь подключиться к БД в Node js. Но проблема в том, что выпадает ошибка, когда я пытаюсь подключиться к ней в node
Файл docker-compose.yml
version: '3.1'

services:
  api:
    build: ./api
    command: npm run start
    restart: unless-stopped
    ports:
      - "3344:3344"
    environment:
      - PORT=3344
    depends_on:
      - adminer
      - api_db
  api_db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test
      MYSQL_USER: root
      MYSQL_PASSWORD: root

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Вот файл Dockerfile
FROM node:13.12-alpine

WORKDIR /usr/src/app

COPY package*.json ./
COPY yarn.lock ./

RUN npm install
COPY . .


А вот сам файл Сервера index.js
const express = require('express')
const app = express()
const mysql = require('mysql2/promise');

app.get('/test', async (req, res) => {
    try {
        const connection = await mysql.createConnection(
            {
                host: 'localhost',
                user: 'root',
                password: 'root',
                database: 'test'
            });

        const test = await connection.execute('create database test')
        console.log(test)
        res.send('ready ')
    } catch(e) {
        console.log(e)
        res.send('error')
    }
})

app.listen(process.env.PORT | 3344, () => {
    console.log('server work')
})


Когда я запускаю команду docker-compose up --build
Выдает вот это
638edc090d8e5293501395.png
Но как только я делаю get запрос на /test, выдает вот это
638edc2b3223d576894983.png

В чем может быть проблема?
  • Вопрос задан
  • 496 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
host: ‘mysql’ виесто localhost
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы