首页 > 编程问答 >通过 Docker 启动的 .NET Core 解决方案无法找到本地 Microsoft SQL Server

通过 Docker 启动的 .NET Core 解决方案无法找到本地 Microsoft SQL Server

时间:2024-06-08 21:58:27浏览次数:24  
标签:sql-server docker asp.net-core docker-compose

我遇到的问题是,当我使用 Docker 启动 .NET Core 项目时,无法找到在本地(而不是作为容器)运行的 Microsoft SQL Server。Swagger UI 的响应如下所示。

TypeError:NetworkError when attempting to fetch resource.

这是我的连接。

这是我的连接字符串

服务器=host.docker.internal,1433;数据库=myDb;用户 ID=myUser;密码=myPassword;加密=False;MultipleActiveResultSets=True;TrustServerCertificate=True;

我已为 MSSQLSERVER 启用了 TCP/IP,将 1433 设置为 TCP 端口,并禁用了域网络的 Windows 防火墙。

我是否还需要修改 docker-compose.override.yaml 文件中的其他内容(可能是与环境有关的内容)?

在此处输入图片描述

注意 :在我的 SQL Server 网络配置 中,我看到的是 SQLEXPRESS 而不是 MSSQLSERVER。这是否会影响情况?


Docker 容器无法连接到本地 SQL Server 的问题

遇到的问题是 Docker 容器无法连接到在本地运行的 Microsoft SQL Server。已经进行了一些配置,例如启用 TCP/IP、设置端口和禁用防火墙,但问题仍然存在。

问题分析:

  • 连接字符串问题: 的连接字符串使用 host.docker.internal 来连接到主机,这通常是正确的。但是,如果的 Docker Desktop 配置不是默认设置,或者使用的是 Docker Toolbox,则此主机名可能无法解析。
  • SQL Server 配置问题: 提到在 SQL Server 网络配置中看到的是 SQLEXPRESS 而不是 MSSQLSERVER。 这可能意味着连接的是 SQL Server Express 实例,而不是默认实例。 请确保的连接字符串中指定的数据库实例名称与实际运行的实例名称一致。
  • 端口冲突: 虽然已将 1433 设置为 TCP 端口,但其他应用程序可能正在使用该端口。可以尝试更改 SQL Server 使用的端口,并在连接字符串中进行相应的更新。
  • 防火墙问题: 尽管已经禁用了域网络的 Windows 防火墙,但可能还有其他防火墙正在运行,例如第三方防火墙软件。 尝试暂时禁用所有防火墙,看看是否能解决问题。

解决方案:

  1. 验证主机名: 确保 host.docker.internal 可以正确解析到的主机。可以尝试在容器内 ping 这个主机名。
  2. 检查 SQL Server 实例名称: 确认的连接字符串中使用的实例名称与实际运行的实例名称一致。 如果使用的是默认实例,则不需要指定实例名称。
  3. 更改端口: 尝试更改 SQL Server 使用的端口,例如 1434,并在连接字符串中更新端口号。
  4. 检查防火墙: 暂时禁用所有防火墙,看看是否能解决问题。如果问题得到解决,则需要配置防火墙规则以允许 Docker 容器访问 SQL Server 端口。
  5. 使用 Docker 网络: 将的 .NET Core 应用程序和 SQL Server 容器连接到同一个 Docker 网络。这样,就可以使用容器名称来连接数据库,而不必使用主机名。

示例 Docker Compose 配置:

version: "3.7"

services:
  my-dotnet-app:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - my-sql-server
    environment:
      - ConnectionStrings__MyDbConnection=Server=my-sql-server,1433;Database=myDb;User Id=myUser;Password=myPassword;

  my-sql-server:
    image: mcr.microsoft.com/mssql/server:2019-latest
    ports:
      - "1433:1433"
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=Your_Strong!_Password

注意:

  • Your_Strong!_Password 替换为安全的密码。
  • depends_on 配置项确保 my-sql-server 容器在 my-dotnet-app 容器之前启动。
  • 使用此配置,的 .NET Core 应用程序可以使用 Server=my-sql-server,1433 连接字符串连接到 SQL Server 容器。

希望这些信息能帮到! 如果还有其他问题,请随时提出。

标签:sql-server,docker,asp.net-core,docker-compose
From: 78595873

相关文章

  • Docker与银河麒麟的兼容性问题
    Docker与银河麒麟的兼容性问题背景大过节的出差.客户想迁移环境,优先使用银河麒麟的系统.有一个需要使用容器docker运行nginx的的需求结果发现被坑的很惨.所以记录一下问题以及解决方案安装完docker后发现dockerrun提示没有权限.docker:Errorresponsefr......
  • Dockerfile编写级联构建参考
    Dockerfile编写级联构建Dockerfile级联构建是一种常见的技术,用于分阶段构建Docker镜像。这种方法可以帮助您优化镜像大小并减少构建时间。Dockerfile级联构建优点:分离了构建和运行环境,避免了不必要的依赖关系和文件,从而创建了一个更小、更安全的最终镜像。构建阶段可以......
  • Docker中部署nacos报Caused by: java.lang.IllegalStateException: No DataSource set
    在进入nacos日志内部发现再次重启同样如此;其实从上面你也就很容易看出问题所在,没有数据;经过排查发现我在docker部署时之前部署的mysql容器并没有启动,需要启动mysql容器z输入两个命令分别启动和查看dockerstartmysqldps经过之后再次重启nacos进入日志后成功:​​​​​......
  • 使用Python进行容器编排【Docker Compose与Kubernetes的比较】
    ......
  • 玩客云刷armbian+CasaOS+Docker+LED灯控制+QBitTorrent+Cpolar内网穿透+青龙+Home Ass
    一、【玩客云的配置介绍】CPU是晶晨S805这是一款32位处理器的CPU,性能放在现在来看是比较弱鸡的,很多玩法都被这颗CPU的性能局限了。双USB2.0这个同样是被吐槽的地方,严重影响文件的传输速度。千兆网口这点比很多同期的设备强。但刷部分固件后会变成百兆。1GB+8GB存储组合这......
  • Docker的资源限制
    目录一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参数3、案例......
  • docker拉取镜像报错Bad Request
    问题现象docker拉取镜像报错BadRequest。问题分析cat/etc/systemd/system/docker.service.d/http-proxy.conf1.1.1.1:80模拟错误的docker代理配置,错误的代理导致镜像拉取失败。解决问题注释代理配置。vim/etc/systemd/system/docker.service.d/http-proxy.conf重启d......
  • Docker大学生看了都会系列(7、Dokcerfile详解)
    系列文章目录第一章Docker介绍第二章2.1Mac通过Homebrew安装Docker第二章2.2CentOS安装Docker第三章Docker常用命令第四章常用命令实战第五章Docker镜像详解第六章Docker容器数据卷第七章Dockerfile详解文章目录一、Dockerfile基本介绍1.1什么是Dock......
  • 基于cloudflare workers自建docker镜像
    缘由因为近期国内镜像站点的变动,自建docker镜像也提上了日程。顺便发现了Hammal这个优秀的项目。Hammal是运行于cloudflareworkers上的Docker镜像加速工具,用于解决获取Docker官方镜像速度缓慢以及完全无法获取k8s.gcr.io上镜像的问题。在这里感谢如下两个项目tomwei......
  • 解决Docker遇到error NU1301: Unable to load the service index for source https://
    解决Docker容器内无法通过HTTPS访问外部网络的问题在使用Docker构建.NET项目时,有时会遇到无法通过HTTPS访问外部网络的问题,导致dotnetrestore命令无法从NuGet源下载依赖项。本文将介绍一种通过修改Docker配置文件config.json来解决该问题的方法。问题描述在......