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



我问这个问题的主要原因是因为我几乎尝试了一切。

这是我的配置:

配置字符串

"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后进入我的数据库服务器容器并创建 TestDB,然后我检查并且可以从我的主机 SSMS 连接到该数据库,但是每当我尝试运行我的 TestApp 容器时,我都会收到此错误

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

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

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

我几乎什么都试过了。如您所见,我更改为仿生 docker 映像,尝试遵循此内容,但没有任何效果。密码是正确的,因为我可以连接到容器内的 cli,我使用以下密码,我也可以从我的主机使用该密码 - 但不能从 TestApp 容器使用该密码。

看来我很愚蠢,并且正在更改appsettings.json而不是appsettings.Development.json的密码,这是因为Visual Studio将该文件隐藏在appsettings.json下。

最新更新