我正在构建一个 Blazor Server 应用程序,并决定将 MS SQL 容器化为数据库。
下面是我的 docker-compose 和 appsettings.json
Docker 撰写:
version: '3.4'
services:
NAME.webapp:
container_name: NAME.app
image: ${DOCKER_REGISTRY-}NAMEwebapp
build:
context: .
dockerfile: NAME.WebApp/Dockerfile
ports:
- "8001:80"
depends_on:
- NAME.db
NAME.db:
restart: on-failure
container_name: NAME.db
image: mcr.microsoft.com/mssql/server:2022-latest
ports:
- "8002:1433"
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=********
volumes:
- NAME-db:/var/lib/sqlserver/data
volumes:
NAME-db:
docker-compose-override.yml:
version: '3.4'
services:
NAME.webapp:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ConnectionStrings__DefaultConnection=Server=NAME.db,8002;Database=NAMEdb;User Id=sa;Password=********;Encrypt=False
ports:
- "80"
appsettings.json:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"InventoryManagement": "Server=localhost,8002; Database=NAMEdb; User Id=sa; Password=********; Encrypt=False"
}
现在当我通过 docker 运行我的程序时,我得到这个错误: 处理请求时发生未处理的异常。 SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供商:TCP 提供商,错误:40 - 无法打开与 SQL Server 的连接:无法打开与 SQL Server 的连接)
我的应用程序和数据库容器都在 Docker Desktop 中运行,但是当我尝试使用 DBeaver 重新连接到数据库时,出现以下错误: “无法打开登录请求的数据库“NAMEdb”。登录失败。ClientConnectionId:4502489a-4610-4641-ad9f-2f0936eaf1c0”
最初,通过此设置,我能够连接到 DBeaver 并查看我的数据库和任何添加的条目。 但是,最近我出于其他原因下载并安装了 SQL Server Express 和 SSMS,我怀疑这可能与错误有关。
这里是 SQL Server docker hub 图像的链接:https://hub.docker.com/_/microsoft-mssql-server
我尝试在通过 SQL Server 配置管理器停止 SQL Server (SQLEXPRESS) 后运行该项目,也尝试运行 SQL Server (SQLEXPRESS)。
尝试删除两个容器并重新启动。
尝试将 repo 克隆到不同的文件夹并启动该项目。
尝试将 DBeaver 中的身份验证从 SQL Server 身份验证更改为 Windows 身份验证,但没有成功。
尝试将 MSSQL_PID 从默认设置为 Express(开发人员)
我的密码符合 docker hub 文档中的要求。
我想知道是否有一个修复程序可以让我的代码与 docker 一起工作,而不是使用我的本地 SQL Server。
谢谢!