подключите nodejs API к контейнеру mariadb docker - PullRequest
0 голосов
/ 27 февраля 2020

не может подключиться к контейнеру mariadb с nodejs. Вот мой код:

const mariadb = require("mariadb");

const connectMysql = async () => {
  try {
    const pool = mariadb.createPool({
      host: "localhost",
      user: "root",
      database: "gamifydb",
      port: "3306",
      password:"password"
    });
    let conn = await pool.getConnection();
    global.conn = conn;
    console.log("mariadb db connected")
  } catch (error) {
    throw error;
  }
};

module.exports = { connectMysql };

контейнеры:

введите описание изображения здесь

Не могли бы вы, ребята, помочь?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

это не работает правильно. я должен перезапустить свой контейнер, чтобы получить его в воке:

(node:32) UnhandledPromiseRejectionWarning: Error: retrieve connection from pool timeout after 10002ms
    at Object.module.exports.createError (/usr/app/node_modules/mariadb/lib/misc/errors.js:55:10)
    at timeoutTask (/usr/app/node_modules/mariadb/lib/pool-base.js:299:16)
    at Timeout.rejectAndResetTimeout [as _onTimeout] (/usr/app/node_modules/mariadb/lib/pool-base.js:321:5)
    at listOnTimeout (internal/timers.js:551:17)
    at processTimers (internal/timers.js:492:7)
(node:32) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:32) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

вот мой docker -компонентный файл:

version: "2"
services:
  gamifydb:
    container_name: gamifydb
    image: mariadb
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - .${pwd}/mariadb:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=root
      - MYSQL_DATABASE=gamifydb

  wavesdb:
    container_name: wavesdb
    image: mariadb
    restart: always
    ports:
      - "3307:3306"
    network_mode: "host"
    volumes:
      - .${pwd}/mariadb:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=root
      - MYSQL_DATABASE=wavesdb

  redis:
    image: redis
    expose:
      - 6379
  gamify:
    container_name: gamify
    build: gamify
    command: npm run dev
    restart: always
    volumes:
      - .:/usr/app/gamify
      - /usr/app/gamify/node_modules
    ports:
      - "3000:3000"
    depends_on:
      - gamifydb
      - redis

  waves-backend:
    container_name: waves-backend
    build: waves-backend
    command: npm run dev
    volumes:
      - .:/usr/app/waves-backend
      - /usr/app/waves-backend/node_modules
    ports:
      - "4000:4000"
    depends_on:
      - wavesdb
      - redis

Есть идеи, как это решить? и еще раз спасибо

0 голосов
/ 27 февраля 2020

Попробуйте изменить localhost на 172.17.0.1 и запустите снова.

172.17.0.1 - это IP-адрес шлюза контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...