如何处理 docker 中的 ef 核心迁移?

时间:2021-03-16 15:23:04

标签: docker .net-core ef-core-3.1

我尝试使用以下 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

0 个答案:

没有答案