Не могу получить доступ к MySQL-контейнеру из узла, но из терминала

0

Я создал приложение-узел, которое запускается командой 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 часа и не знаю, что я делаю неправильно. Что мне нужно изменить, чтобы это работало?

Дайте мне знать, если что-то мне нужно, чтобы помочь мне с моей проблемой. Спасибо!

Теги:
docker
docker-compose

1 ответ

2
Лучший ответ

Вы пытаетесь подключиться к 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'
};
  • 0
    Почти слишком очевидно. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню