Dockerfile 自动构建子文件夹中的所有 csproj 文件

问题描述 投票:0回答:1

我正在构建一个具有插件架构的应用程序,因此源可以包含许多不同的插件(但在同一文件夹中订购),如下所示:

src
  - Dockerfile
  - mainProject
    - mainProject.csproj
    - program.cs
  - plugins
    - plugin1
      - plugin1.csproj
      - plugin1.cs
    - plugin2
      - plugin2.csproj
      - plugin2.cs

mainProject
不会引用插件项目,因此在
Dockerfile
中运行以下命令会将主项目发布到
/app/publish
并且不会包含插件:

WORKDIR /src
COPY . .
RUN dotnet publish "mainProject/mainProject.csproj" -c Release -o /app/publish

现在我想将每个插件发布到

/app/publish/plugins
,以便将
plugin1
发布到
/app/publish/plugins/plugin1
,与
plugin2
类似。

为了减少维护需求,我不想每次创建新插件时都更新 Dockerfile,所以我想自动执行此操作。

我对shell脚本不是很熟悉。我所拥有的是以下内容,它打印了正确的命令,但我不知道如何正确执行它,或者是否有更好的方法。

find . -type f -name '*.csproj' -printf "dotnet publish %p -c Release -o /app/publish/plugins/%h\n"

如何自动构建子文件夹中的所有

.csproj
文件,并将它们从
Dockerfile

发布到自己的文件夹中
docker .net-core build dockerfile sh
1个回答
0
投票

我想 find -exec 应该可以解决问题

find ./plugins/ -type f -name '*.csproj' -exec dotnet publish {} -c Release -o /app/publish/plugins \;

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.