Невозможно подключиться к локальному SQL-серверу при запуске приложения через контейнер Docker.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно подключиться к локальному SQL-серверу при запуске приложения через контейнер Docker.

Сообщение Anonymous »

Я пытаюсь запустить свой веб-API ASP.NET Core 8 через Docker. Я впервые использую Docker с .NET, и это вызывает головную боль.
Когда я запустите API через контейнер (Dockerfile), этот код запускается для переноса базы данных, если это необходимо:

Код: Выделить всё

public static class DataHelper
{
public static async Task ManageDataAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken)
{
using AppDbContext db = serviceProvider.GetRequiredService();

IEnumerable pendingMigrationIds = await db.Database.GetPendingMigrationsAsync(cancellationToken).ConfigureAwait(false);

if (pendingMigrationIds.Any())
{
await db.Database.MigrateAsync(cancellationToken).ConfigureAwait(false);
}
}
}
Однако, когда я запускаю код, это исключение выдается в .GetPendingMigrations:

Microsoft. Data.SqlClient.SqlException: при установке соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик TCP, ошибка: 26 — ошибка при обнаружении сервера/указанного экземпляра)

Итак, я пошел на SO и попробовал следующие решения:
  • Открыл конфигурацию SQL Server и включил общую память, именованные каналы и TCP/IP как на MSSQLServer, так и на MSSQLServer и SQLExpress добавил IPALL TCP-порта к 1433.
  • Открыл Win+r с помощью Services.msc и перезапустил SQL Server (MSSQLSERVER) и SQL Server (SQLEXPRESS), а также их агент сервера.
  • Я изменил свои строки подключения для использования Источник данных=,
    ;..., Источник данных=Источник данных=local\\MSSQLLocalDB;..., Источник данных=localhost\\SQLEXPRESS;...< /code>, Data Source=.\\SQLEXPRESS;... но ничего не работает
  • Я перезагрузил компьютер
  • Я удалил контейнеры и образы, прежде чем все повторить
Вот мой Dockerfile:

Код: Выделить всё

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyAPI/MyAPI.csproj", "MyAPI/"]

COPY ["Application/Application.csproj", "Application/"]
COPY ["Domain/Domain.csproj", "Domain/"]
COPY ["Persistence/Persistence.csproj", "Persistence/"]
RUN dotnet restore "./MyAPI/MyAPI.csproj"
COPY . .
WORKDIR "/src/MyAPI"
RUN dotnet build "./MyAPI.csproj" -c
$BUILD_CONFIGURATION -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyAPI.csproj" -c
$BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyAPI.dll"]
Я попробовал все решения, которые смог найти для SO, но ничего не помогло.
Как мне подключиться к SQL Server из Docker?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -container
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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