Здравствуйте, товарищи! Столкнулся со странной проблемой, помогите пожалуйста разобраться.
Есть
Node.js приложение. Данное приложение работает с базами данных
MySQL и
PostgreSQL. Использовал библиотеку
sequelize для работы с ранее упомянутыми базами данных. На локальной машине (windows 10) проект работает. Запустил этот проект в Docker контейнере. Сам Docker стоит на CentOS сервере. Приложение работало пару дней без проблем, но вчера заметил проблему. Приложение не может подключиться к базе данных MySQL, при этом с подключением к PostgreSQL нет проблем. Как упоминал ранее локально проект без проблем подключается к MySQL. Также без проблем подключаюсь через иструменты dbForge/DBeaver.
MySQL.js:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database_name', 'username', 'password', {
host: 'host',
dialect: 'mysql',
pool: {
max: 15,
min: 5,
idle: 20000,
evict: 15000,
acquire: 30000
},
});
sequelize.authenticate().then(() => {
console.log('Connection to database has been established successfully.');
}).catch(err => {
console.error('Unable to connect to database:', err);
});
module.exports = sequelize;
routes.js:const express = require('express');
const router = express.Router();
const sequelize = require('../configurations/MySQL');
const Sequelize = require('sequelize');
const passport = require('passport');
require('../configurations/password')(passport);
router.post('/search_by_name', passport.authenticate('jwt', {session: false}, null), function(req, res) {
const token = getToken(req.headers);
if (token) {
sequelize.query("LONG SQL QUERY", {
replacements: {
name: req.body.name,
},
type: Sequelize.QueryTypes.SELECT
}).then((locations) => {
res.status(200).send(locations)
}).catch((error) => {
res.status(400).send(error);
});
} else {
return res.status(401).send({
status: false,
description: "Unauthorized"
});
}
});
Изначально я подумал, что проблема в том, что sequelize не закрывает подключения/пулы автоматически. Поэтому я несколько раз пересоздавал контейнер, чтобы обнулить все. К сожалению проблема не исчезла.
Может ли быть что проблема в самом Docker?! Какие у вас есть предположения? По умолчанию MySQL использует порт 3306. Может ли бы так, что Docker контейнер каким-то образом закрыл этот порт?