繁体   English   中英

如何避免在 docker 文件中手动复制 csproj 文件

[英]how to avoid manually copying csproj files in docker file

我有多个具有多级嵌套的 dotnet 项目,我正在为每个应用程序的 docker 文件指定每个csproj及其路径结构。

每当添加和删除项目时,所有 docker 文件都必须更新。

我可以避免它并制作一些通用的 docker 文件吗?

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY My.sln .

COPY ["Core/Events.csproj", "Core/"]
COPY ["Core/Infra/Services/Services.csproj", "Core/Infra/Services/"]
COPY ["Features/Feature.A.API/Feature.A.API.csproj", "Features/Feature.A.API/"]

RUN dotnet restore

COPY . .

您可以将所有需要的项目存储在根目录中,我们将其称为src然后您只需使用主项目进行恢复/构建/发布(带有您的 asp .net 核心 webapi 的项目),构建期间所需的所有其他来源(依赖项)然后将出现(在 src 目录中),并具有正确的路径。

例如:

  • 源/核心/....
  • 源/功能/...

docker 文件将如下所示(aspnet 5.0):

带占位符:

  • [API_DIR] 在您的情况下: Features/Feature.A.API/
  • [API_PROJECT] 在您的情况下: Feature.A.API
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
ENV TZ=Europe/Berlin
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["src/[API_DIR]/[API_PROJECT].csproj", "[API_DIR]/"]
RUN dotnet restore "[API_DIR]/[API_PROJECT].csproj"
COPY ["src/", "."]
WORKDIR "src/[API_DIR]"
RUN dotnet build "[API_PROJECT].csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "[API_PROJECT].csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "[API_PROJECT].dll"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM