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
下