Не удается достичь MySQL размещенной базы данных из Docker. NET Core - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть дроплет DigitalOcean, который запускает Ubuntu, и я установил MySQL на него. Я могу связаться с ним с моего компьютера через S SH соединение с MySQL верстаком, поэтому удаленный доступ в порядке. Имя хоста 127.0.0.1

The bind address in my mysqld.cnf: 127.0.0.1

У меня есть. NET Core API, и я хотел бы использовать Docker для его запуска. Я сделал контейнер pu sh to docker hub и притянул его к капле. При попытке запуска я получаю эту ошибку:

Произошла ошибка при подключении к базе данных «на сервере« 127.0.0.1 ».

Моя строка подключения:

"Server=127.0.0.1;Port=3306;Database=db;Uid=user;Pwd=pass”

Я пытался на сервере: localhost

IP-адрес для docker0: 172.17.0.1, поэтому я пробовал это и для connectionString.

Я не понимаю почему я могу подключиться к БД из MySQL рабочей среды, а не из. NET Core Web API.

. NET Версия ядра - 3.1.

1 Ответ

0 голосов
/ 16 февраля 2020

Ваш. NET Ядро находится внутри контейнера. Таким образом, если вы попытаетесь подключиться localhost или 127.0.0.1, он попытается подключить сам контейнер, а не хост. Поскольку ваш MySQL находится на вашем хосте, а не внутри контейнера, вы можете получить к нему доступ с другого IP-адреса.

Например, у вас есть eth0 или enps0 или что-то подобное, тогда у этого интерфейса есть IP 192.168.1.2, тогда вы можете использовать этот IP в качестве строки подключения.


Или, альтернативный способ, использовать --network host при создании контейнера. Таким образом, если вы используете 127.0.0.1, он попытается подключиться к хосту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...