首页 > 解决方案 > R 应用程序的多阶段构建

问题描述

我正在尝试为基于rocker/r-ubuntu:20.04图像的 R 应用程序创建多阶段构建。

我基于该图像的原因是apt-get按照建议安装二进制包,以缩短构建时间。

如果我在没有多阶段构建的情况下构建图像,则最终图像大小为2.32GB,因此我需要通过多阶段构建来减小最终大小。

我遵循的方法是创建一个alpine:latest图像并app从构建器复制文件夹,并安装 R 库(/usr/local/lib/R/site-library/)和位于/usr/share/doc.

最终图像不起作用,因为没有安装执行应用程序的命令。

Dockerfile 如下:

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 应用程序图像进行多阶段构建?

谢谢。

标签: rlinuxdockerdocker-multi-stage-build

解决方案


推荐阅读