将docker buildkit缓存与R包一起使用
我尝试使用docker buildkit方法来缓存包,以加快向docker容器添加包的速度。我是从和中学到的。对于Python和apt-get,我可以让它工作,但是对于R包,我不能让它工作 在Python的Dockerfile中,我可以更改:将docker buildkit缓存与R包一起使用,r,docker,docker-buildkit,R,Docker,Docker Buildkit,我尝试使用docker buildkit方法来缓存包,以加快向docker容器添加包的速度。我是从和中学到的。对于Python和apt-get,我可以让它工作,但是对于R包,我不能让它工作 在Python的Dockerfile中,我可以更改: RUN pip install -r requirements.txt to(需要Dockerfile顶部的注释位) 然后,当我向requirements.txt文件中添加一个包,而不是重新下载和构建包时,pip能够重新使用它所做的所有工作。因此buil
RUN pip install -r requirements.txt
to(需要Dockerfile顶部的注释位)
然后,当我向requirements.txt
文件中添加一个包,而不是重新下载和构建包时,pip能够重新使用它所做的所有工作。因此buildkit缓存挂载在docker的图像层之外添加了一个级别的缓存。这节省了大量的时间。我希望为r-packages设置类似的功能
以下是我尝试过的对apt-get有效但对r-packges无效的方法。我还尝试了install2.r
脚本
# syntax=docker/dockerfile:experimental
FROM rocker/tidyverse
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
apt update && apt install -y gcc \
zsh \
vim
COPY ./requirements.R .
RUN --mount=type=cache,target=/usr/local/lib/R/site-library Rscript ./requirements.R
我想我不明白:
我怀疑它与安装R软件包时的
keep.source
命令有关,因为仍在思考这个问题。但是看起来renv在这里是相关的,因为它提供了一个缓存,但是它似乎想在容器运行时而不是构建时链接,假设缓存在主机上而不是buildx building container hi@jameshowison上,您找到了如何做吗?我对此一无所知,我想知道是否有一个可行的解决方案,可以通过使用某种类型的r软件包安装缓存来节省时间。这就是我所得到的:我认为binder的人也在为此而努力。谢谢分享!
# syntax=docker/dockerfile:experimental
FROM rocker/tidyverse
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
apt update && apt install -y gcc \
zsh \
vim
COPY ./requirements.R .
RUN --mount=type=cache,target=/usr/local/lib/R/site-library Rscript ./requirements.R