2016-12-05 8 views
1

.NET CoreとMySQLでapiを構築しています。私は現在、Dockerで設定しています。まず、Dockerのアプリケーションを、自分のラップトップでローカルに実行されているデータベースに接続するように設定しました。私はデータベースに接続し、接続文字列を<My local IP-address>に変更するために、実行コマンドに--add-host=docker:<My local IP-address>を追加しなければならなかった。2つのドッカーを1つのデータベース、1つの.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からこのデータベースに接続します。それは罰金を開始するが、それはデータベースに接続できないという例外を与える

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

:私はコンテナを一緒にリンクする--linkオプションを使用して行います。私は問題が接続文字列にあると思う。私は、接続する必要のあるサーバのIPアドレス/ホスト名が正しいかどうかわかりません。これは私の接続文字列です:

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

答えて

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

は、私がアプリケーションを起動し、すべてが魅力のように働きました。

関連する問題