docker - 如何在Dockerfile中使用for循环?

标签 docker for-loop dockerfile

我有一个 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 循环,使 COPYRUN 仅运行一次?像这样:

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 指令,所以我建议您:

  1. 提供一条 COPY 指令,将所有文件复制到不同的子文件夹中。
  2. 编写并复制一个 shell 脚本,该脚本循环遍历子文件夹来编译它们。
  3. 为上述脚本提供一条 RUN 指令。

问候。

关于docker - 如何在Dockerfile中使用for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72812417/

相关文章:

r - 使用 docker 托管 R 管道工 API

docker - 无法使用 EF Core Mysql 提供程序将 Docker 中的 Asp.net Core Web Api 连接到主机服务器上的非 Docker Mysql

python - Dockerfile RUN合并pip命令

docker run hello-world 失败,stderr : permission denied

windows - 是否可以在 Windows 主机上容器化 Windows GUI 应用程序?

windows - 在输出的第一行停止 FOR/F 命令(Windows 批处理)

r - 六边形网格中细胞数量的矢量化计算

windows - 仅对少数指定扩展使用批处理脚本

docker - 如何在Docker容器中启用yum repo

docker - 如何在 Dockerfile 中安装需要重启的东西?