ConnectionStrings в докере не может подключитьсяC#

Место общения программистов C#
Ответить
Anonymous
 ConnectionStrings в докере не может подключиться

Сообщение Anonymous »

У меня есть файл docker-compose.yml для запуска SQL Server и веб-API C# ASP.NET Core, созданного ABP.io:
services:
my-api:
container_name: my-api
environment:
- ASPNETCORE_ENVIRONMENT=Docker
depends_on:
- sqlserver
ports:
- "44353:44353"
sqlserver:
container_name: sqlserver
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
- MSSQL_SA_PASSWORD=p@ssw0rd
- ACCEPT_EULA=Y
ports:
- "1433:1433"


Вот мой Dockerfile для MyApi:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
COPY bin/Release/net8.0/publish/ app/
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src

FROM base AS final
WORKDIR /app
COPY --from=build /src .

ENTRYPOINT ["dotnet", "MyApi.dll"]

Моя проблема в том, что API не может запуститься из-за строк подключения:
Server=sqlserver,1433;Database=MyDatabase;User ID=sa;pwd=p@ssw0rd;TrustServerCertificate=True

Но я не могу понять, почему:
  • Когда я пытаюсь подключиться к базе данных докера с помощью sqlcmd или с SQL Server Management Studio с моего хост-компьютера все работает нормально.
  • Если я создаю докер Ubuntu внутри стека для проверки связи с моей машиной (sqlserver) по имени докера, это тоже работает
  • Если я запускаю sqlcmd внутри докера Ubuntu с помощью этой командной строки /opt/mssql-tools18/bin/sqlcmd - S sqlserver,1433 -U sa -P p@ssw0rd -C это работает
  • Если я запускаю MyApi со строками подключения докера вне моего докера (прямо из Visual Studio), работает
Я действительно не понимаю, чего не хватает или что не так в моем случае.
Я также клонировал этот репозиторий docker-compose-demo, чтобы проверить, работает ли он, и это так.
Это что-то специфическое для ABP.io? Я пока понятия не имею
РЕДАКТИРОВАТЬ: кроме того, я не уверен, связано ли это, но в журналах докера я вижу это:
2024-11-29 14:24:02 [19:24:02 ERR] An error occurred using the connection to database 'MyDatabase' on server 'sqlserver,1433'.
...
2024-11-29 14:24:02 [19:24:02 ERR] Object reference not set to an instance of an object.
2024-11-29 14:24:02 System.NullReferenceException: Object reference not set to an instance of an object.
2024-11-29 14:24:02 at Microsoft.Data.Common.ADP.LocalMachineRegistryValue(String subkey, String queryvalue)
2024-11-29 14:24:02 at Microsoft.Data.SqlClient.TdsParserStaticMethods.AliasRegistryLookup(String& host, String& protocol)
2024-11-29 14:24:02 at Microsoft.Data.SqlClient.SqlInternalConnectionTds.ResolveExtendedServerName(ServerInfo serverInfo, Boolean aliasLookup, SqlConnectionString options)


Подробнее здесь: https://stackoverflow.com/questions/792 ... nt-connect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»