我正在使用 MSSQL Server 数据库开发 .NET 核心 Web API。我尝试将其容器化到 Docker 容器中,并使用 Docker Compose 来启动此服务。但是我的 API 无法连接到数据库。
出现以下错误:
Application startup exception: System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)
我的启动中的代码:
services.AddDbContext<ProductServiceDbContext>(options =>
options.UseSqlServer("server=sqlserver;port=1433;user id=sa;password=docker123!;database=ProductService;"));
Dockerfile:
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore dockerapi.csproj
COPY . ./
RUN dotnet publish dockerapi.csproj -c Release -o out
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "dockerapi.dll"]`
Docker-撰写:
version: '3.4'
services:
productservice:
image: productservice/api
container_name: productservice_api
build:
context: ./ProductService/ProductService
depends_on:
- sqlserver
ports:
- "5000:80"
sqlserver:
image: microsoft/mssql-server-linux:latest
container_name: sqlserver
ports:
- "1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=docker123!
我尝试了几件事:
“服务器=sqlserver;用户ID=sa;密码=docker123!;数据库=ProductService;”或“服务器=sqlserver,1433;用户ID=sa;密码=docker123!;数据库=ProductService;”
请您参考如下方法:
嘿,我遇到了类似的问题,偶然发现了您的帖子,这与我遇到的问题不同,但我想我知道您遇到的问题(抱歉回复太晚了)
查看您的连接字符串 server=sqlserver;port=1433;user id=sa;password=docker123!;database=ProductService; ,您实际上必须以另一种方式指定端口:server=sqlserver,1433;user id=sa;password=docker123!;database=ProductService;
希望这可以帮助!


