【问题标题】:.Net Core 3.1 MSSQL backend in Docker setup: Docker-compose up producing connection failureDocker 设置中的 .Net Core 3.1 MSSQL 后端:Docker-compose up 产生连接失败
【发布时间】:2021-04-27 12:23:03
【问题描述】:

docker-compose.yml

version: "3.9"
services:
    web:
        build: .
        ports:
            - "8000:80"
        container_name: web_application
        depends_on:
            - medicalmgr
    
    medicalmgr:
        image: "mcr.microsoft.com/mssql/server:2019-latest"
        environment:
            SA_PASSWORD: Pw@mm2021
            ACCEPT_EULA: Y
        ports:
            - "1433:1433"
        container_name: mmm_mmsql_2019

dockerfile

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY . .
RUN dotnet restore && \
    dotnet publish -c Release -o out
    
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MedicalManager.dll"]

Startup.cs 的

public void CofigureServices(..){
      ....
       var server = Configuration["DBServer"] ?? "medicalmgr";
       var port = Configuration["DBPort"] ?? "1433";
       var user = Configuration["DBUser"] ?? "SA";
       var password = Configuration["DBPassword"] ?? "Pw@mm2021";
       var database = Configuration["Database"] ?? "MedicalManager";


       //var connectionStr = $"Server={server},{port};Initial Catalog={database};User ID= 
       //{user};Password={password}";
       var connectionStr = 
       @"Server=medicalmgr;Database=MedicalManager;User=sa;Password=Pw@mm2021;";
       services.AddDbContext<MedicalManagerDBContext>(
                options => options.UseSqlServer(connectionStr)
       );}

错误: 应用程序启动异常:Microsoft.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP 提供者,错误:40 - 无法打开与 SQL Server 的连接)

【问题讨论】:

  • Ref: Networking in Compose 默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问,并且可以通过与容器名称相同的主机名被它们发现。您是否尝试过在连接字符串中使用Server=mmm_mmsql_2019;
  • 容器名称不适用于服务器名称,即使它们是设计使然,除非指定,否则所有容器都在同一主机上共享相同的默认网络。无论如何,这里是源代码,github.com/biteus/mmm_development/pull/new/docker_mssql_con 公开访问。如果你能看看你是否可以连接。顺便说一句,如果 .Net 应用程序不在 docker 中但在 DB 中,那么它会连接。我需要两者都在 Docker 设置中。对你的帮助表示感谢。谢谢丹·古兹曼
  • 丹·古兹曼。我解决了在容器化解决方案中运行带有 mssql db 的 asp.net core 3.2 应用程序的问题。但是,只有在容器设置中,发布用户注册时,登录才不起作用。任何建议。一些重定向问题。

标签: c# .net sql-server docker connection


【解决方案1】:

试试这个:

var connectionStr = 
@"Data Source=localhost,1433;Initial Catalog=MedicalManager;User Id=sa;Password=Pw@mm2021";

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2021-04-26
    • 1970-01-01
    • 2020-08-26
    • 2021-08-29
    • 1970-01-01
    • 2020-06-28
    • 2019-08-02
    • 2023-01-04
    相关资源
    最近更新 更多