【问题标题】:Can not connect to Docker SQL Server from Docker ASP.NET Core 3.1无法从 Docker ASP.NET Core 3.1 连接到 Docker SQL Server
【发布时间】:2020-10-01 09:17:28
【问题描述】:

我问这个的主要原因是因为我已经尝试了一切。

这是我的配置:

配置字符串

"Server=db-server;Database=TestDB;User=sa;Password=Test1234;SslMode=None;"

码头工人撰写:

version: "3.5"

networks:
    localdev:
        name: localdev

services:
    main-api:
        build:
            context: .
            dockerfile: src/TestApp/Dockerfile
        restart: always
        ports:
            - "5001:5001"
        environment:
            ASPNETCORE_ENVIRONMENT: "Development"
            ASPNETCORE_URLS: "http://+:5001"
        depends_on:
            - db-server
        networks:
            - localdev
        volumes:
            - ./tmp:/app/tmp

    db-server:
        image: "mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04"
        container_name: db-server
        environment:
            ACCEPT_EULA: "Y"
            SA_PASSWORD: "Test1234"
        ports:
            - "1400:1433"
        networks:
            - localdev

Dockerfile


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic AS base

RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

WORKDIR /app
EXPOSE 5001

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-bionic AS build
WORKDIR /src
COPY ["src/TestApp.API/TestApp.API.csproj", "src/TestApp.API/"]
COPY ["src/TestApp.Infrastructure/TestApp.Infrastructure.csproj", "src/TestApp.Infrastructure/"]
COPY ["src/TestApp.Domain/TestApp.Domain.csproj", "src/TestApp.Domain/"]
COPY ["src/TestApp.ApplicationCore/TestApp.ApplicationCore.csproj", "src/TestApp.ApplicationCore/"]
RUN dotnet restore "src/TestApp.API/TestApp.API.csproj"
COPY . .
WORKDIR "/src/src/TestApp.API"
RUN dotnet build "TestApp.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "TestApp.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TestApp.API.dll"]

我还在docker-compose build 之后进入我的 db-server 容器并创建 TestDB,然后我检查并可以从我的主机 SSMS 连接到该数据库,但是每当我尝试运行我的 TestApp 容器时,我都会在此处收到此错误

主机意外终止
主要api_1 | Microsoft.Data.SqlClient.SqlException (0x80131904):用户“sa”登录失败。

在我的数据库服务器日志中我也发现了这个错误

用户“sa”登录失败。原因:密码与提供的登录名不匹配。

我几乎尝试了一切。如您所见,我更改为仿生 docker 图像,尝试关注 this,但没有任何效果。密码是正确的,因为我可以使用以下密码连接到容器内的 cli,并且我也可以从主机使用该密码 - 但不能从 TestApp 容器使用。

【问题讨论】:

    标签: c# docker asp.net-core .net-core


    【解决方案1】:

    看来我很笨,在 appsettings.json 而不是 appsettings.Development.json 中更改密码,这是因为 Visual Studio 将该文件隐藏在 appsettings.json 下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2019-05-29
      • 2016-12-26
      • 1970-01-01
      • 2019-10-21
      相关资源
      最近更新 更多