此问题在此处已有答案:
Conditional COPY/ADD in Dockerfile?(8个答案)
5天前关闭。
我想建立一个Docker映像。在这个过程中,需要从本地文件系统复制一个大的包(150 MB)到映像。
我想先检查一下这个文件(本地目录)是否存在。如果有,我可以直接把它复制到镜像中。否则我会让docker-build通过一个URL从网上下载它,这会花很多时间。
我称之为条件COPY。
但我不知道如何实现这个功能。RUN if
命令无法执行此操作。
此问题在此处已有答案:
Conditional COPY/ADD in Dockerfile?(8个答案)
5天前关闭。
我想建立一个Docker映像。在这个过程中,需要从本地文件系统复制一个大的包(150 MB)到映像。
我想先检查一下这个文件(本地目录)是否存在。如果有,我可以直接把它复制到镜像中。否则我会让docker-build通过一个URL从网上下载它,这会花很多时间。
我称之为条件COPY。
但我不知道如何实现这个功能。RUN if
命令无法执行此操作。
2条答案
按热度按时间pkwftd7m1#
例如,您可以在RUN中运行if条件
停靠文件:
或者你可以试试这个
对于Copy,您可以发现此dockerfile很有帮助
ijxebb2r2#
我个人将依赖于docker的built-in caching来完成这一任务:
第一次构建时会下载文件。之后的每一次构建都会使用图层缓存,只要你不删除之前的图像。你也可以用storage backends外部化构建缓存。
如果你的
ADD
之前的指令经常改变图像,你也可以使用--link
标志ADD
来独立存储这个层。参见文档中的ADD --link或更好的COPY --link。