r - 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 应用程序图像进行多阶段构建?
谢谢。
解决方案
推荐阅读
- amazon-web-services - 从远程状态重建/重新创建 terraform
- c# - 在 Power Bi 查询函数中进行 POST REST API 调用以生成令牌,并使用该基于 JWT 的令牌进行另一个 GET API 调用
- javascript - 鼠标事件
给出错误最大调用堆栈大小超出 - angular - 带有模态Angular 8的ngx-datatable
- vue.js - 使用 NuxtJS Axios 的 Feedly API
- javascript - 按回车将事件附加到“v-btn”
- css - 在 SCSS 中使用 CSS var 会引发语法错误(SASS Live Compiler)
- python - 关于如何构造一个每天计算另一个列表的最小值和最大值的函数(24 行数据)的任何建议?
- python - 将logical_and 与列表一起使用
- javascript - Quilljs:如何将链接添加到未保存到增量的编辑器内容?