我已经看到许多 dockerfiles 在 RUN 语句中包含所有构建步骤,例如:
RUN echo "Hello" &&
cd /tmp &&
mv a.txt b.txt &&
...
and so on...
Run Code Online (Sandbox Code Playgroud)
我的问题是:用单个 bash 脚本替换这些指令有什么好处/缺点,该脚本为我提供突出显示语法、循环功能等?就像是:
COPY ./script.sh /tmp
RUN bash /tmp/script.sh
Run Code Online (Sandbox Code Playgroud)
进而
RUN echo "Hello" &&
cd /tmp &&
mv a.txt b.txt &&
...
and so on...
Run Code Online (Sandbox Code Playgroud)
谢谢!
主要区别在于,当您将COPYbash 脚本添加到映像中时,它将可以在正在运行的容器中进行检查,而RUN命令则更加不透明。由于其他原因,将命令放入这样的文件中可以说更易于管理:VCS 历史记录中的更改会更加清晰,对于更长或更复杂的脚本,您可能会发现使用脚本中的脚本更容易干净地格式化内容。单独的文件,而不是嵌入到命令中的 Dockerfile 中RUN。
否则,结果是相同的(在这两种情况下,您执行的是同一组命令),尽管 和COPY会RUN产生额外的图像层(相对于RUN单独的图像层)。
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |