将ASP.NET Core 6应用程序连接到Docker容器中的SQL Server时出错

wlsrxk51  于 2023-08-03  发布在  Docker
关注(0)|答案(2)|浏览(118)

我有一个现有的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创建的示例?

vqlkdk9b

vqlkdk9b1#

正如我在图像mcr.microsoft.com/mssql/server:latest的文档中看到的,您应该绑定端口1433。但是你在docker compose文件中绑定了端口1437
https://hub.docker.com/_/microsoft-mssql-server
但是,你不需要绑定任何端口,因为我们使用Docker compose构建容器,它们在同一个网络中并且可以看到彼此。

qojgxg4l

qojgxg4l2#

删除端口,并在连接字符串中使用用户ID sa确实解决了我的问题。
此连接字符串起作用:

"BookStoreContext": "Server=database;Initial Catalog=BookStoreDb;User Id=sa;Password=Nirv@n@345;"

字符串

相关问题