2016-12-05 104 views
1

我正在用.NET Core和MySQL构建api,全部完成。我现在在Docker中进行设置。首先,我在Docker中设置了应用程序,连接到我的笔记本电脑本地运行的数据库。我不得不将--add-host=docker:<My local IP-address>添加到运行命令以连接到数据库并将连接字符串更改为<My local IP-address>无法将两个docker连接在一起,一个数据库,一个.net核心应用程序

现在我想拥有一个单独的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选项将容器连结在一起,

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;" 

回答

1

我只是傻在连接字符串使用127.0.0.1。我转发3306到本地主机,所以我想; “我可以在我的连接字符串中使用它。”但是,那么本地主机不在该泊坞窗中的本地主机。所以,我检查了运行MySQL容器的IP地址由:

sudo docker inspect mysqlserver | grep IPAddress 

然后使用该IP地址的连接字符串中:

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

我启动应用程序,一切工作就像一个魅力。

相关问题