Я пытаюсь настроить основной проект ASP. NET для запуска внутри контейнера Docker.
Работает хорошо и все ок. Проблема в том, что когда я хочу выполнить новые созданные миграции, я получаю сообщение об ошибке, в котором говорится, что мой файл .csproj используется другим процессом и заблокирован. Это приводит к сбою в моей попытке обновить базу данных. Он должен быть заблокирован командой do tnet watch run , которая является моей точкой входа в Dockerfile.
Одним из решений, о котором я думаю, является создание отдельного проекта с приложением CLI, которое запускает миграции при его запуске. Но это означает, что мне нужен отдельный проект для каждой команды, которая мне может понадобиться, и она звучит не очень хорошо.
Во всех найденных мною учебниках показано выполнение миграций при запуске проекта, но я чувствую, что это немного опасно, особенно в производственной среде. Как вы справляетесь с миграциями EF в Docker контейнерах?
Вот мой Dockerfile, который я использую для разработки, чтобы иметь возможность горячей перезагрузки при изменении файла. Я монтирую свой том кода в файл docker -compose.yml.
FROM mcr.microsoft.com/dotnet/core/sdk:3.1
ENV DOTNET_USE_POLLING_FILE_WATCHER 1
WORKDIR /app
EXPOSE 5000
ENTRYPOINT dotnet watch run --urls=http://+:5000