我export DOCKER_BUILDKIT=1之前尝试过docker-compose build,但没有看到预期的BuildKit输出。它应该工作吗?
我们的一些Docker镜像需要从Nexus服务器或Internet上下载更大的二进制文件,后者负责分发Java,Node.js,Mobile(Android和iOS)应用程序.例如,使用ADD或RUN指令进行下载.
RUN curl -o docker https://get.docker.com/builds/Linux/x86_64/docker-latest
Run Code Online (Sandbox Code Playgroud)
考虑到命令"docker build"将根据文件的mtime查看指令和缓存,在构建这些图像时利用缓存机制的方法是什么,避免重新下载整个二进制文件? /sf/answers/1862888611/.
另一个问题是如果资源发生变化,Docker将不会下载最新版本.
假设您要为docker镜像安装以下软件包列表
("jsonlite","dplyr","stringr","tidyr","lubridate",
"knitr","purrr","tm","cba","caret",
"plumber","httr")
Run Code Online (Sandbox Code Playgroud)
安装这些实际上需要大约1个小时!
有关如何加速这样的事情的任何建议?(或者如何防止在每次新图像构建时重新安装?)
边注
我不会像这样从dockerfile安装这些软件包:
RUN Rscript -e "install.packages('stringr')
...
Run Code Online (Sandbox Code Playgroud)
相反,我创建了一个R脚本Requirements.R来安装这些包,并简单地执行:
RUN Rscript Requirements.R
Run Code Online (Sandbox Code Playgroud)
这些不是直接从Dockerfile安装软件包的最佳选择吗?