无法将两个码头工人连接在一起,一个数据库,一个 .net 核心应用程序
Unable to connect two dockers together, one database, one .net core application
我正在使用 .NET Core 和 MySQL 构建一个 api,这一切都已完成。我现在在 Docker 中进行设置。首先,我在 Docker 中设置了连接到笔记本电脑本地数据库 运行 的应用程序。我不得不将 --add-host=docker:<My local IP-address>
添加到 运行 命令以连接到数据库并将连接字符串更改为 <My local IP-address>
。
现在我想在单独的 Docker 实例中使用 MySQL 数据库。我 运行 通过这样做:
docker run -p 3306:3306 --name mysqlserver --expose 3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_ROOT_HOST=% -d mysql/mysql-server
我可以通过
从我的本地机器连接到这个 Docker 数据库
mysql -h 127.0.0.1 -P 3306 -u root -p
效果很好。
现在我想从另一个 Docker 实例中的 API 连接到这个数据库。我确实使用 --link
选项将容器 link 放在一起:
sudo docker run -p 5000:5000/tcp --link mysqlserver:mysql -it --rm apimysql
启动正常,但出现无法连接到数据库的异常。我认为问题出在连接字符串中。我不知道我必须连接的服务器的正确 IP-Address/Hostname 是什么。这是我的连接字符串:
"DefaultConnection":"Server=127.0.0.1;Uid=root;Pwd=password;Database=webapi;"
我只是愚蠢地在连接字符串中使用 127.0.0.1
。我将 3306 端口转发到本地主机,所以我想; "I can use that in my connection string." 但是 localhost 不是 docker 中的 localhost。所以我通过以下方式检查了 运行 MySQL 容器的 IP 地址:
sudo docker inspect mysqlserver | grep IPAddress
然后在连接字符串中使用该 IP 地址:
"DefaultConnection":"Server=172.17.0.2;Uid=root;Pwd=password;Database=webapi;"
我启动了应用程序,一切都很顺利。
我正在使用 .NET Core 和 MySQL 构建一个 api,这一切都已完成。我现在在 Docker 中进行设置。首先,我在 Docker 中设置了连接到笔记本电脑本地数据库 运行 的应用程序。我不得不将 --add-host=docker:<My local IP-address>
添加到 运行 命令以连接到数据库并将连接字符串更改为 <My local IP-address>
。
现在我想在单独的 Docker 实例中使用 MySQL 数据库。我 运行 通过这样做:
docker run -p 3306:3306 --name mysqlserver --expose 3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_ROOT_HOST=% -d mysql/mysql-server
我可以通过
mysql -h 127.0.0.1 -P 3306 -u root -p
效果很好。
现在我想从另一个 Docker 实例中的 API 连接到这个数据库。我确实使用 --link
选项将容器 link 放在一起:
sudo docker run -p 5000:5000/tcp --link mysqlserver:mysql -it --rm apimysql
启动正常,但出现无法连接到数据库的异常。我认为问题出在连接字符串中。我不知道我必须连接的服务器的正确 IP-Address/Hostname 是什么。这是我的连接字符串:
"DefaultConnection":"Server=127.0.0.1;Uid=root;Pwd=password;Database=webapi;"
我只是愚蠢地在连接字符串中使用 127.0.0.1
。我将 3306 端口转发到本地主机,所以我想; "I can use that in my connection string." 但是 localhost 不是 docker 中的 localhost。所以我通过以下方式检查了 运行 MySQL 容器的 IP 地址:
sudo docker inspect mysqlserver | grep IPAddress
然后在连接字符串中使用该 IP 地址:
"DefaultConnection":"Server=172.17.0.2;Uid=root;Pwd=password;Database=webapi;"
我启动了应用程序,一切都很顺利。