是否有任何理由支持串联RUN指令而不是运行脚本?
当我创build一个Dockerfile来生成一个图像时,我有一些select,当涉及到安装和构build的东西。
我可以
RUN a && \ b && \ c
要么
COPY install.sh /install.sh RUN /install.sh
其中install.sh
是
a b c
是否有任何实质性的理由支持另一种方法?
与其他答案相比,我通常更喜欢:
RUN a && \ b && \ c
主要的原因是立即清楚发生了什么事情。 如果你使用脚本,你已经有效地隐藏了代码。 为了让新用户了解正在发生的事情,他们现在需要在查看脚本之前find具有构build上下文的项目。
这是一个权衡,一旦事情变得太复杂,你应该重构成一个脚本。 但是,您可能更喜欢将脚本从已知位置curl
而不是COPY
它,以便Dockerfile
保持独立。
RUN a && b && C vs RUN install.sh
从Docker的angular度来看,两种方法都是一样的。
然而,第二种方法(运行单个脚本并将所有内容都封装在内部)更清晰。 它允许更好地处理a,b,c和它们之间的依赖关系。 你也更新install.sh而不更新Dockerfile,保持Dockerfile简单。