当我创建一个Dockerfile来生成图像时,我在安装和构建内容时有一些选择。
我能做到
RUN a && \
b && \
c
或者
COPY install.sh /install.sh
RUN /install.sh
install.sh
a
b
c
是否有任何实质性的理由支持一种方法而不是另一种方法?
答案 0 :(得分:2)
与其他答案相反,我通常更喜欢:
RUN a && \
b && \
c
主要原因是它立即清楚发生了什么。如果您改为使用脚本,则可以有效地隐藏代码。为了让新用户了解正在发生的事情,他们现在需要在查看脚本之前找到具有构建上下文的项目。
这是一种权衡,一旦事情变得太复杂,你应该重构成一个脚本。但是,您可能更喜欢curl
来自已知位置的脚本而不是COPY
脚本,以便Dockerfile
保持独立。
答案 1 :(得分:0)
RUN a && b && C
vs
RUN install.sh
从Docker的角度来看,两种方法都是相同的。
然而,第二种方法(运行单个脚本并将所有内容包装在引擎盖下)更清晰。它允许更好地处理管理a,b,c及其相互依赖关系。您还更新install.sh而不更新Dockerfile,保持Dockerfile简单。