Не удается подключиться к удаленной базе данных MySQL в приложении Node.js (DOCKER)? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть приложение NODE.JS, которое работает с удаленной базой данных MySQL. В моем локальном компьютере (Windows 10) приложение успешно подключено к удаленной базе данных MySQL. Для этой задачи я использую библиотеку sequelize . База данных MySQL имеет максимум 40 пулов соединений для каждого пользователя. Когда я запускаю это приложение на Docker, который находится на CentOS сервере, я замечаю ошибку. Ошибка создания приложения при попытке подключения к удаленной базе данных MySQL в контейнере Docker. Что может быть причиной этой проблемы на ваш взгляд? Как я могу решить эту проблему?

ERROR :

Unable to connect to remote MySQL database: { SequelizeConnectionError: connect ETIMEDOUT
    at Utils.Promise.tap.then.catch.err (/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:149:19)
    at tryCatcher (/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/node_modules/bluebird/js/release/promise.js:690:18)
    at _drainQueueStep (/node_modules/bluebird/js/release/async.js:138:12)
    at _drainQueue (/node_modules/bluebird/js/release/async.js:131:9)
    at Async._drainQueues (/node_modules/bluebird/js/release/async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/node_modules/bluebird/js/release/async.js:17:14)
    at processImmediate (timers.js:632:19)
  name: 'SequelizeConnectionError',
  parent:
   { Error: connect ETIMEDOUT
       at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
       at listOnTimeout (timers.js:324:15)
       at processTimers (timers.js:268:5)
     errorno: 'ETIMEDOUT',
     code: 'ETIMEDOUT',
     syscall: 'connect',
     fatal: true },
  original:
   { Error: connect ETIMEDOUT
       at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
       at listOnTimeout (timers.js:324:15)
       at processTimers (timers.js:268:5)
     errorno: 'ETIMEDOUT',
     code: 'ETIMEDOUT',
     syscall: 'connect',
     fatal: true } }

JS

const Sequelize = require('sequelize');

// "max_user_connections" resource for "db_user" user is "40".
const sequelize = new Sequelize('db_name', 'db_user', 'db_password', {
    host: 'HOST',
    port: '3306',
    dialect: 'mysql',
    pool: {
        max: 15,
        min: 5,
        idle: 20000,
        evict: 15000,
        acquire: 30000
    }
});

sequelize.authenticate().then(() => {
    console.log('Connection to remote MySQL database has been established successfully.');
}).catch(err => {
    console.error('Unable to connect to remote MySQL database:', err);
});

module.exports = sequelize;

* 1021 зависимости *:

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