首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R3.4.4的码头文件,如何缩短建坞时间,至少需要30分钟

R3.4.4的码头文件,如何缩短建坞时间,至少需要30分钟
EN

Stack Overflow用户
提问于 2018-12-23 05:48:15
回答 1查看 294关注 0票数 0

为了缩小我的码头形象的R,早些时候它是2G。我已经写了安装和所有的过程和删除包在一个层,这有助于减少图像大小。但在30分钟至45分钟之间,至少需要30分钟才能建立起码头图像。如何缩短时间

Dockerfile

代码语言:javascript
复制
FROM centos
LABEL maintainer="admin.squad@xyz.com" \
  version="2.0" \
  project="xyz-R"
#EXPOSE 9988
ARG APP_HOME="/opt/deployment"
ARG PROJECT_NAME="xyz-R"
ENV LANG en_US.UTF-8
ENV APP_HOME=${APP_HOME} \
PROJECT_NAME=${PROJECT_NAME} \
PROJECT_HOME=${APP_HOME}/${PROJECT_NAME}

#RUN yum makecache
RUN yum install -y wget centos-release-scl bzip2-devel openssl- 
devel cyrus-sasl-devel libxml2-devel && \
yum install -y devtoolset-6 && \
source scl_source enable devtoolset-6 && \
export PATH=/opt/rh/devtoolset-6/root/bin:$PATH && \
rm -rf /var/cache/yum && \
mkdir packages1; cd packages1; wget -qO- https://downloads.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz | tar zvx && \
cd zlib-1.2.8; ./configure; make; make install; cd .. && \
pwd && \
wget -qO- http://downloads.sourceforge.net/pcre/pcre-8.35.tar.gz | tar xzv && \
cd pcre-8.35; pwd; ./configure; make; make install; cd .. && \
wget -qO- http://tukaani.org/xz/xz-5.2.2.tar.gz | tar xzv && \
cd xz-5.2.2; ./configure; make; make install; cd .. && \
wget -qO- https://curl.haxx.se/download/curl-7.47.1.tar.gz | tar xzv && \
cd curl-7.47.1; ./configure; make; make install; cd .. && \
wget -qO- https://cran.r-project.org/src/base/R-3/R-3.4.4.tar.gz | tar xzv && \
cd R-3.4.4; ./configure --with-readline=no --with-x=no && \
make; make install;cd .. && \
cd zlib-1.2.8; pwd; make uninstall; cd ..; rm -r /packages1/zlib-1.2.8 && \
pwd; cd pcre-8.35; pwd; make uninstall; cd ..;rm -r /packages1/pcre-8.35   && \
cd xz-5.2.2; pwd; make uninstall; cd ..; rm -r /packages1/xz-5.2.2; cd curl-7.47.1; pwd; make uninstall; cd ..; rm -r /packages1/curl-7.47$
Rscript -e 'install.packages("dplyr", repos="https://cloud.r-project.org/", dependencies=TRUE)' && \
#   Rscript -e 'remove.packages("dplyr", lib=/usr/local/lib64/R/library)' && \
Rscript -e 'install.packages("xml2", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("xml2", lib=/usr/local/lib64/R/library)' && \
Rscript -e 'install.packages("mongolite", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("mongolite", lib=/usr/local/lib64/R/library)' && \
Rscript -e 'install.packages("tidyr", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("tidyr", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("Rcpp", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("Rcpp", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("RcppEigen", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("RcppEigen", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("rstan", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("rstan", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("prophet", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("prophet", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("rjson", repos="https://cloud.r-project.org/")'  && \
#    Rscript -e 'remove.packages("rjson", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("stringi", repos="https://cloud.r-project.org/")' && \
#    Rscript -e 'remove.packages("stringi", lib=/usr/local/lib64/R/library))' && \
Rscript -e 'install.packages("stringr", repos="https://cloud.r-project.org/")' && \
yum remove -y devtoolset-6  && \
rm -rf /var/cache/yum && \
rm -rf /usr/local/lib64/R/library
RUN rm -rf /tmp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-23 11:50:33

这里有一些可能对你有帮助的想法:

最快的安装可能是Ubuntu18.04与c4d2u PPA一起作为基础。这样你就可以安装大部分(全部?)R包作为二进制文件,而不是从源安装它们。IIRC甚至还有一个来自rocker项目的Docker映像来实现这个想法。另一种可能是基于Debian的rocker/r-ver:3.4.4

如果必须是CentOS,您应该启用EPEL。这样就可以直接获得R 3.4.4。但是,R的所有构建依赖项都可以作为二进制文件使用,包括开发包和运行时包之间的分离。如果您从源构建R,则应该使用一个RUN

  • 安装运行时和开发依赖项。
  • 下载、配置和安装R
  • 删除R源和开发包

对于包安装,我将使用一个带有适当选项的install.packages (sp?)以启用并行处理。注意,最后的rm -rf /tmp/*应该是同一个RUN语句的一部分。

我将使用两个RUN语句,一个用于安装R,另一个用于安装软件包。这不应增加图像大小(显着地)。但是,如果只更改包列表,则不必重新安装R。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53901510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档