Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从Docker ASP.NET Core 3.1连接到Docker SQL Server_C#_Docker_Asp.net Core_.net Core - Fatal编程技术网

C# 无法从Docker ASP.NET Core 3.1连接到Docker SQL Server

C# 无法从Docker ASP.NET Core 3.1连接到Docker SQL Server,c#,docker,asp.net-core,.net-core,C#,Docker,Asp.net Core,.net Core,我问这个问题的主要原因是因为我已经尝试了一切 以下是我的配置: 配置字符串 "Server=db-server;Database=TestDB;User=sa;Password=Test1234;SslMode=None;" docker compose: version: "3.5" networks: localdev: name: localdev services: main-api: build: conte

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

以下是我的配置:

配置字符串

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

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服务器容器并创建TestDB,然后我检查并可以从主机SSM连接到该数据库,但每当我尝试运行TestApp容器时,我都会在那里遇到此错误

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

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

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


我什么都试过了。正如你们所看到的,我改成了仿生docker图像,试图跟随,但没有任何效果。密码是正确的,因为我可以连接到容器内的cli,所以我使用以下密码,我也可以从主机使用该密码-但不能从TestApp容器使用该密码。

看起来我是哑巴,在
appsettings.json
中更改密码,而不是在
appsettings.Development.json
中更改密码,这是因为VisualStudio将该文件隐藏在
appsettings.json