Dockerfile:运行本地安装脚本的最佳方式?
我有一个Yocto Linux工具链安装程序脚本toolchain.sh
。 如果我运行这个,它将安装一堆交叉编译器到/opt
。 什么是我可以做一个预先形成的docker形象的最好办法? 到目前为止,我已经这样做了:
ADD ./toolchain.sh /opt RUN yes | /opt/toolchain.sh RUN rm -f /opt/toolchain.sh
这似乎工作,但似乎效率低下,因为现在我的形象有安装程序和解压缩的工具链占用更多的空间。
有没有办法做到这一点,而不占用不必要的空间?
限制你的图层:
ADD ./toolchain.sh /opt RUN yes | /opt/toolchain.sh && \ rm -f /opt/toolchain.sh
这可以确保您不会为toolchain.sh创build一个额外的图层,因为您将删除它,它只会为您的Docker图像创build额外的大小。
如果你好奇的话,那就是为什么人们不要在dockerfiles中使用几个运行语句,而是用&& \
来创build巨大的“单线程”,并且为了更好的可读性而尝试将它们分开。
除此之外,你做的是完全有效的,为dockerdevise – 没有什么可担心的。