linuxドッカーコンテナ内でWebサーバーを実行しています。私はローカルのSQL Serverに接続にエラーが発生し、次のウィンドウズ10のホスト上で実行する場合:私は、ウェブサーバをデバッグするときホストのdockerコンテナからSQL Serverへの接続文字列
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MyAppDb;User ID=test;Password=test;",
:
Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[1]
An exception occurred in the database while iterating the results of a query.
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address...
JSON内の接続文字列は次のようになります同じ接続文字列を持つVisual Studioでは、それは動作します。だから私は理解していない、なぜドッカーがConnection string is not valid
エラーをスローします。
Webサーバーは.NET Core 1.1を使用しているため、thisという名前のSQL Serverインスタンスに接続することは機能するはずです。私は2つのSQL Serverインスタンスがインストールされています。 linuxドッカーがサポートしていないので、名前付きパイプとの接続は機能しません。それは、ホストコンピュータと同じネットワーク環境を持っている必要がありますので
私は、コンテナのネットワークモードのホストを使用します。
docker run --rm -it --name MyApp -v c:\users\myself\MyApp.json:/app/appsettings.json --network="host" MyAppImage
は誰も考えていますか?
Webサーバーに['LocalDb'](https://msdn.microsoft.com/en-us/library/hh510202.aspx)がインストールされていますか? – DavidG
コンテナはローカルホスト上ではなく、異なるIP上にあるため、ローカルマシン上でdbサーバを実行している場合は、データベースサーバのTCP/IPネットワーキングを有効にする必要があります。また、HOSTNAMEまたはホスト環境のIP ...これは理想的には環境変数を介して入力する必要があります。 – Tracker1
@DavidG:LocalDbはWindows 10ホストマシン上で動作します。 – gumo