Применение миграций Entity Framework при использовании ASP.Net Core в образе Docker - PullRequest
1 голос
/ 03 мая 2019

У меня есть приложение ASP.Net Core, которое использует Entity Framework с Sqlite. Я создаю образ Docker для развертывания этого.

Приложение ASP.Net Core работает нормально при отладке с помощью VS Code, но при работе в Docker-контейнере я получаю сообщение об ошибке:

SqliteException: ошибка SQLite 1: «нет такой таблицы: MyTable».

Я подумал, что это потому, что мне нужно запускать миграции Entity Framework при создании образа Docker. Я добавил dotnet ef database update в свой Dockerfile, который выглядит так:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

RUN dotnet ef database update

FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyApplication.dll"]

Образ строится без ошибок. Однако, когда я создаю контейнер и смотрю на базу данных, он пуст без таблиц.

Как правильно настроить базу данных с Entity Framework при создании образа Docker?

1 Ответ

0 голосов
/ 03 мая 2019

Независимо от вашего типа развертывания, вы можете Применить миграции во время выполнения к своему классу запуска в самом конце метода Configure, например, вызов следующего метода:

public void ApplyMigrations(ApplicationDbContext context) {
    if (context.Database.GetPendingMigrations().Any()) {
        context.Database.Migrate();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...