![](/img/trans.png)
[英]How to avoid copying referenced assemblies with new PackageReference xml tag in 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):
带占位符:
Features/Feature.A.API/
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.