подключиться к серверу mysql, запущенному в Docker-контейнере, из другого контейнера - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть два сервера node.js и сервер mysql. Оба контейнера работают нормально. Я пытаюсь подключиться к базе данных, запущенной на контейнере, из моего приложения узла.я создаю мостовую сеть по

$ docker network create -d bridge mynetwork

и запускаю оба моих контейнера в этой сети по

$ docker run -p 32031:3306 --network mynetwork  --name mysql  -e MYSQL_ROOT_PASSWORD=abc123 -d mysql:5.7

$ docker run -p 3000:3000 --network mynetwork  node-server node index.js

iam, пытаясь соединиться с IP-адресом контейнера mysql, который я нашел по Докер проверяет mysql , который является 172.18.0.2 и портом 32031

, где это пошло не так и не соединяется.

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Контейнеры Docker, подключенные через сеть, могут взаимодействовать внутри системы.Ваш контейнер MySQL работает на внутреннем порту 3306 и внешнем 32031.

Попробуйте подключиться через порт 3306.Это должно работать.

0 голосов
/ 27 февраля 2019

Ооо Удачи.теперь он работает, я снова создаю образ докера и соединяю базу данных с IP-адресом, который я нашел, проверяя контейнер mysql, и с портом 32031. запускаем контейнер докера так же, как $ docker run -p 3000:3000 --network mynetwork node-server node index.js

var pool = mysql.createPool({
  connectionLimit : 3,
  host            : '172.18.0.1',
  user            : 'root',
  port            :  32031,
  password        : 'abc123',
  database        : 'mydatabase',
  charset         : 'utf8mb4',
  timezone        : 'PKT',
  timeout         : 4000
});

:)

0 голосов
/ 27 февраля 2019

Если вы подключаетесь по IP, который вы получаете от docker inspect command.Это означает, что ваше соединение теперь 172.18.0.2, а порт по-прежнему 3306

Еще один способ подключения из nodejs (nodejs и mysql в одной сети).Информация о подключении:

hostname: mysql // container name
port: 3306
...