linux R应用程序的多阶段构建

rta7y2nd  于 2022-12-22  发布在  Linux
关注(0)|答案(1)|浏览(130)

我正在尝试基于rocker/r-ubuntu:20.04映像为R应用程序创建多阶段构建。
我之所以基于该映像,是为了按照建议通过apt-get安装二进制包,以缩短构建时间。
如果我不使用多阶段构建来构建映像,则最终映像大小为2.32GB,因此我需要使用多阶段构建来减小最终大小。
我遵循的方法是创建一个alpine:latest映像,从builder中复制app文件夹,安装R库((/usr/local/lib/R/site-library/),二进制包位于/usr/share/doc中。
最后的映像不起作用,因为没有安装执行应用程序的命令。
停靠文件如下所示:

FROM rocker/r-ubuntu:20.04 as builder

# # system libraries of general use
RUN apt-get update && apt-get install -y \
    pandoc \
    ...
    libxml2-dev 

RUN apt-get update && \
    apt-get install -y -qq \
    r-cran-config \
    ...
    r-cran-tidyverse 

RUN R -e "install.packages(c('other-packages'), dependencies=T)"    

# copy the app to the image
RUN mkdir -p /root/bloomapp/tmp
COPY . /root/bloomapp
COPY .Renviron Rprofile.site /usr/lib/R/etc/

FROM alpine:latest

#Copy app to alpine
COPY --from=builder /root/bloomapp /root/bloomapp
COPY --from=builder /usr/local/lib/R/site-library/ /usr/local/lib/R/site-library/
COPY --from=builder /usr/share/doc /usr/share/doc

WORKDIR /root/bloomapp/

EXPOSE 3838

这种方法合理吗?或者存在其他更好的方法来为R应用程序映像进行多阶段构建?
谢谢。

w8rqjzmb

w8rqjzmb1#

除了从一个rocker版本开始之外,还可以使用一个slim映像,并在多阶段构建的builder阶段从源代码安装R。
参见此处的R安装文档以供参考:https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-R-under-Unix_002dalikes

  • 选择安装R树的目录(R不仅仅是一个二进制文件,它还有其他的数据集、帮助文件、字体度量等)。让我们把这个地方命名为R_HOME。解压缩源代码。这应该会在顶层目录下创建src、doc和其他几个目录...如果configure和make命令执行成功,将创建一个名为R的shell脚本前端并将其复制到R_HOME/bin

相关问题