【问题标题】:Unable to connect two dockers together, one database, one .net core application无法将两个 docker 连接在一起,一个数据库,一个 .net 核心应用程序
【发布时间】:2017-04-19 15:33:28
【问题描述】:

我正在使用 .NET Core 和 MySQL 构建一个 api,这一切都完成了。我现在在 Docker 中设置它。首先,我在 Docker 中设置了应用程序,连接到笔记本电脑上本地运行的数据库。我必须将--add-host=docker:<My local IP-address> 添加到运行命令以连接到数据库并将连接字符串更改为<My local IP-address>

现在我想将 MySQL 数据库放在一个单独的 Docker 实例中。我通过这样做来运行它:

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 选项将容器链接在一起:

sudo docker run -p 5000:5000/tcp --link mysqlserver:mysql -it --rm apimysql

它启动良好,但出现无法连接到数据库的异常。我认为问题出在连接字符串中。我不知道我必须连接的服务器的正确 IP 地址/主机名是什么。这是我的连接字符串:

"DefaultConnection":"Server=127.0.0.1;Uid=root;Pwd=password;Database=webapi;"

【问题讨论】:

    标签: c# mysql .net connection-string


    【解决方案1】:

    我只是愚蠢地在连接字符串中使用127.0.0.1。我将 3306 端口转发到 localhost 所以我想; “我可以在我的连接字符串中使用它。”但是 localhost 不是该泊坞窗中的 localhost 。所以我通过以下方式检查了正在运行的 MySQL 容器的 IP 地址:

    sudo docker inspect mysqlserver | grep IPAddress
    

    然后在连接字符串中使用那个IP地址:

    "DefaultConnection":"Server=172.17.0.2;Uid=root;Pwd=password;Database=webapi;"
    

    我启动了应用程序,一切都很顺利。

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2015-09-07
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多