Когда я запустите 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);
}
}
}
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;... но ничего не работает - Я перезагрузил компьютер
- Я удалил контейнеры и образы, прежде чем все повторить
Код: Выделить всё
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"]
Как мне подключиться к SQL Server из Docker?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -container