我有一个现有的ASP.NETCore6应用程序,该应用程序已经与SQLServer数据库一起运行。我现在正在尝试使用Docker容器化应用程序,但数据库连接出现了问题。我希望得到一些关于如何建立正确的数据库连接的指导。
我有一个ASP.NET Core 6应用程序,在appsettings.Development.json中包含以下连接字符串:
"BookStoreContext": "Server=.;Initial Catalog=BookStoreDb;Trusted_Connection=True;MultipleActiveResultSets=true"
字符串
安装Docker并添加docker-compose.yml文件和必要的配置(包括SQL Server镜像)后,我将连接字符串更新为:
"BookStoreContext": "Server=database;Initial Catalog=BookStoreDb;User Id=admin;Password=abc@345;"
型
错误代码:
当我尝试运行Dockerized应用程序时,我遇到以下错误:
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'admin'.
型
docker-compose.yml:
version: '3.4'
services:
book-store:
image: ${DOCKER_REGISTRY-}bookstore
build:
context: .
dockerfile: Book-Store/Dockerfile
depends_on:
- database
database:
image: mcr.microsoft.com/mssql/server:latest
environment:
ACCEPT_EULA: Y
SA_PASSWORD: abc@345 # Replace with your SQL Server SA password
MSSQL_PID: Express
ports:
- "1434:1437" # Map the container's port 1433 to port 1434 on the host machine
型
我将感谢任何帮助,以确定我在Docker设置和连接字符串配置中可能缺少或做错了什么。我想为我的ASP.NET Core 6应用程序在Docker容器中建立到SQL Server数据库的成功连接,此外,我如何通过已经安装的SQL Server示例登录到从Docker创建的示例?
2条答案
按热度按时间vqlkdk9b1#
正如我在图像
mcr.microsoft.com/mssql/server:latest
的文档中看到的,您应该绑定端口1433
。但是你在docker compose文件中绑定了端口1437
。https://hub.docker.com/_/microsoft-mssql-server
但是,你不需要绑定任何端口,因为我们使用Docker compose构建容器,它们在同一个网络中并且可以看到彼此。
qojgxg4l2#
删除端口,并在连接字符串中使用用户ID
sa
确实解决了我的问题。此连接字符串起作用:
字符串