Я знаю, что на этот вопрос было дано много ответов, но, похоже, никто из них не помог мне в этой проблеме. Я хочу создать клиентское приложение create-Reaction-app, экспресс-бэкэнд и базу данных mysql с помощью docker-compose. Я настроил свой файл, который, кажется, раскручивает все мои контейнеры на портах Givens. Моя проблема в том, что когда я пытаюсь получить доступ к своей базе данных с помощью пакета npm mysql, я получаю ошибку ECONNREFUSED
. Я знаю, что могу подключиться к базе данных из приложения узла, так как когда я создаю отдельное приложение узла, которое не находится в контейнере Docker, оно работает нормально.
Почему я могу получить доступ к моей базе данных MySQL в Docker-контейнере из Sequel Pro и из другого приложения, не являющегося узлом Docker, но не тогда, когда я запускаю их все с помощью docker-compose.
Вот ссылка на мой файл docker-compose здесь. https://github.com/Jazilch/airbnb-app/blob/master/docker-compose.yml
Я удалил имя пользователя и пароль, так как знаю, что они верны, поскольку я могу подключиться, используя то же имя пользователя и пароль, с моего сервера другого узла, который использует ту же конфигурацию.
const pool = mysql.createPool({
host: 'localhost',
port: '3306',
user: '',
password: '',
database: 'airbnb_database',
});
pool.query = util.promisify(pool.query);
pool.getConnection((err, connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection was closed.')
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections.')
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused.')
}
if (err) {
console.log(err);
}
}
if (connection) connection.release()
return
})