我有一个 Dockerfile,其指令有 4 倍相同,只是文件名发生了变化:
COPY ./MyProject.Common/MyProject.Common.csproj /app/MyProject.Common/
RUN dotnet restore /app/MyProject.Common/MyProject.Common.csproj
COPY ./MyProject.Manual/MyProject.Manual.csproj /app/MyProject.Manual/
RUN dotnet restore /app/MyProject.Manual/MyProject.Manual.csproj
COPY ./MyProject.Widgets/MyProject.Widgets.csproj /app/MyProject.Widgets/
RUN dotnet restore /app/MyProject.Widgets/MyProject.Widgets.csproj
COPY ./${CLIENT_PROJECT}/${CLIENT_PROJECT}.csproj /app/${CLIENT_PROJECT}/
RUN dotnet restore /app/${CLIENT_PROJECT}/${CLIENT_PROJECT}.csproj
是否可以使用 for 循环,使 COPY
和 RUN
仅运行一次?像这样:
FOR [MyProject.Common, MyProject.Manual, ${CLIENT_PROJECT}]
COPY ./${FOR_PARAM}/${FOR_PARAM}.csproj /app/${FOR_PARAM}/
RUN dotnet restore /app/${FOR_PARAM}/${FOR_PARAM}.csproj
ENDFOR
谢谢! :)
最佳答案
docker 文件中没有 FOR/LOOP
指令,所以我建议您:
- 提供一条
COPY
指令,将所有文件复制到不同的子文件夹中。 - 编写并
复制
一个 shell 脚本,该脚本循环遍历子文件夹来编译它们。 - 为上述脚本提供一条
RUN
指令。
问候。
关于docker - 如何在Dockerfile中使用for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72812417/