我正在尝试基于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应用程序映像进行多阶段构建?
谢谢。
1条答案
按热度按时间w8rqjzmb1#
除了从一个rocker版本开始之外,还可以使用一个slim映像,并在多阶段构建的
builder
阶段从源代码安装R。参见此处的R安装文档以供参考:https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-R-under-Unix_002dalikes
R_HOME
。解压缩源代码。这应该会在顶层目录下创建src、doc和其他几个目录...如果configure和make命令执行成功,将创建一个名为R的shell脚本前端并将其复制到R_HOME/bin
。