Dockerfile:运行本地安装程序脚本的最佳方法?

时间:2017-07-27 18:45:09

标签: docker dockerfile

我有一个Yocto Linux工具链安装程序脚本toolchain.sh。如果我运行它,它会将一堆交叉编译器安装到/opt。对于预先制作的泊坞窗图像,我能做到这一点的最佳方法是什么?到目前为止,我已经做到了这一点:

ADD ./toolchain.sh /opt
RUN yes | /opt/toolchain.sh
RUN rm -f /opt/toolchain.sh

这似乎有效,但似乎效率低下,因为现在我的图像同时安装程序和未打包的工具链占用更多空间。

有没有办法在不占用不必要空间的情况下做到这一点?

1 个答案:

答案 0 :(得分:1)

限制图层:

ADD ./toolchain.sh /opt

RUN yes | /opt/toolchain.sh && \
  rm -f /opt/toolchain.sh

这可以确保您不会为toolchain.sh创建额外的图层,因为您将删除它,它只会为您的docker图像创建额外的大小。

如果你很好奇,那就是为什么人们不在dockerfiles中使用多个run-statement,而是用&& \创建巨大的“one liners”,并尝试将它们分开以提高可读性。

除此之外,你所做的是完全有效的并且是为码头工人设计的 - 没有什么可担心的。