Я создал приложение-узел, которое запускается командой docker-compose
. Приложению нужен сервер mysql, который также запускается, но когда я дойду до точки в моем приложении-узле для доступа к серверу, я получаю следующую ошибку:
events.js:136
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:3306
at Object._errnoException (util.js:1031:13)
at _exceptionWithHostPort (util.js:1052:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1195:14)
--------------------
at Protocol._enqueue (/usr/src/node_modules/mysql/lib/protocol/Protocol.js:145:48)
at Protocol.handshake (/usr/src/node_modules/mysql/lib/protocol/Protocol.js:52:23)
at Connection.connect (/usr/src/node_modules/mysql/lib/Connection.js:130:18)
at Connection._implyConnect (/usr/src/node_modules/mysql/lib/Connection.js:461:10)
at Connection.query (/usr/src/node_modules/mysql/lib/Connection.js:206:8)
at Object.<anonymous> (/usr/src/configs/passport.js:15:12)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
at Module.require (module.js:585:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/usr/src/app.js:47:1)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
Соответствующий код узла по существу таков:
var mysql = require('mysql');
var dbconfig = require('./database');
var connection = mysql.createConnection(dbconfig.connection);
И database.js выглядит так:
module.exports = {
'connection': {
'host': '127.0.0.1',
'user': 'user',
'password': 'password'
},
'database': 'website_user',
'users_table': 'users'
};
Все это выполняется на моем MacBook. Когда я открываю второе окно терминала и выполняю:
mysql -h 127.0.0.1 -u user -p
Я могу успешно подключиться к этому серверу. Пользователь, указанный там, идентичен пользователю, который передается моему установлению соединения в приложении узла. Я перепутал с этим, вероятно, 4 часа и не знаю, что я делаю неправильно. Что мне нужно изменить, чтобы это работало?
Дайте мне знать, если что-то мне нужно, чтобы помочь мне с моей проблемой. Спасибо!
Вы пытаетесь подключиться к 127.0.0.1:3306
из контейнера узла, но сам контейнер узла. Если ваша служба базы данных называется mysql
вы должны иметь возможность использовать такую конфигурацию (предполагая, что docker-compose.yml версия 2 или выше):
module.exports = {
'connection': {
'host': 'mysql',
'user': 'user',
'password': 'password'
},
'database': 'website_user',
'users_table': 'users'
};