Lea*_*ker 17 c# docker .net-core docker-compose asp.net-core
我的机器上安装了windows的docker.有一个针对.net core 1.0.0的控制台应用程序,它试图访问在不同VM上运行的SQL Server数据库.我可以从我的机器ping运行SQL Server的VM.
当我尝试使用dotnet run我的机器上的命令提示符运行控制台应用程序时,它工作正常.但是当在docker容器中运行相同的应用程序时,我收到一条消息
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:TCP提供程序,错误:40 - 无法打开与SQL Server的连接)
我试过用
docker run --add-host sqldemo:<VM running sql server ip here>
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.
右键单击您的数据库,选择"属性/安全性/服务器身份验证/ SQL Server和Windows身份验证模式"单选按钮.重新启动MS SQL服务.
例
"ConnectionStrings": {
"DefaultConnection": "Server=YourServerName;Database=YourDatabaseName;MultipleActiveResultSets=true;User Id=UserNameYouJustAdded;Password=PassordYouJustCreated"
},
Run Code Online (Sandbox Code Playgroud)
确保删除Trusted_Connection=True.
我的示例Docker文件
FROM microsoft/dotnet:nanoserver
ARG source=.
WORKDIR /app
EXPOSE 5000
EXPOSE 1433
ENV ASPNETCORE_URLS http://+:5000
COPY $source .
Run Code Online (Sandbox Code Playgroud)
在提升的PowerShell中从与Docker文件相同的位置运行
dotnet publish
docker build bin\Debug\netcoreapp1.0\publish -t aspidserver
docker run -it aspidserver cmd
Run Code Online (Sandbox Code Playgroud)
我想运行容器并查看在PowerShell中运行的输出.
一旦容器在命令提示符下启动并在容器中运行,我就启动了我的应用程序.
dotnet nameOfApplication.dll
Run Code Online (Sandbox Code Playgroud)
如果一切都按计划进行,那么应该启动并运行.
您可以运行网络设置设置为 的 docker 容器host。这样的容器将与 docker 主机共享网络堆栈,从容器的角度来看,localhost(或 127.0.0.1)将引用 docker 主机。
docker run --net=host ...
Run Code Online (Sandbox Code Playgroud)
然后,您应该从 docker 容器内部获取 SQL Server 数据库,就像从主机获取 SQL Server 数据库一样。
| 归档时间: |
|
| 查看次数: |
16025 次 |
| 最近记录: |