2016-12-05 25 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;" 

我啓動應用程序,一切工作就像一個魅力。

相關問題