我尝试使用以下 docker 文件在 docker 环境中处理 ef 核心迁移,但它没有创建数据库并运行迁移脚本。有没有办法让我们在 docker 环境中处理 ef 核心迁移
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM FROM microsoft/aspnetcore-build AS builder
RUN dotnet tool install --global dotnet-ef --version 3.1.4
ENV PATH="${PATH}:/root/.dotnet/tools"
RUN apt-get update && apt-get install -y dos2unix
WORKDIR /build
COPY Northwind.sln ./
COPY ["NuGet.Config", "src/"]
COPY ["Src/WebUI/WebUI.csproj", "./src/WebUI/"]
COPY ["Src/Common/Common.csproj", "./src/Common/"]
COPY ["Src/Persistence/Persistence.csproj", "./src/Persistence/"]
COPY ["Src/Application/Application.csproj", "./src/Application/"]
COPY ["Src/Domain/Domain.csproj", "./src/Domain/"]
COPY ["Src/Infrastructure/Infrastructure.csproj", "./src/Infrastructure/"]
COPY ["Src/WebUI/setup.sh", "./setup.sh"]
RUN dotnet restore --configfile "src/NuGet.Config" "src/WebUI/WebUI.csproj"
COPY . .
WORKDIR /build/Src/WebUI/
RUN dotnet build "WebUI.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebUI.csproj" -c Release -o /app/publish
RUN chmod +x ./setup.sh
RUN dos2unix ./setup.sh && apt-get --purge remove -y dos2unix && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["./setup.sh"]
#CMD ["dotnet", "ef", "--project", "../Persistence", "database", "update"]
setup.sh 文件如下
#!/bin/bash
set -e
#run_cmd="dotnet run --server.urls http://*:80"
until dotnet-ef database update; do
>&2 echo "SQL Server is starting up"
sleep 1
done