You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny Golem生成的Dockerfile构建报错:不存在‘remotes’包

问题根因
  1. 你的项目使用了renv做依赖管理,项目根目录下的.Rprofile和renv相关文件被同步到容器的/build_zone目录后,R进程启动会自动激活renv隔离环境。该环境默认仅加载项目私有库内的包,不会继承你之前在系统全局R库安装的remotes等依赖,因此调用remotes::install_local时提示包不存在。
  2. 就算绕过remotes报错完成安装,renv默认会将你的exampleApp包安装到/build_zone/renv/library路径下,后续执行rm -rf /build_zone时会将已安装的应用包一并删除,因此运行镜像时会提示包不存在。
修复方案

推荐优先使用禁用容器内renv加载的方案,镜像体积更小,逻辑更简单:

完整修改后的Dockerfile

FROM rocker/r-ver:4.1.1
RUN apt-get update && apt-get install -y  git-core libcurl4-openssl-dev libgit2-dev libicu-dev libssl-dev libxml2-dev make pandoc pandoc-citeproc unixodbc-dev && rm -rf /var/lib/apt/lists/*
RUN echo "options(repos = c(CRAN = 'http://cran.rstudio.com/'), download.file.method = 'libcurl', Ncpus = 4)" >> /usr/local/lib/R/etc/Rprofile.site
RUN R -e 'install.packages("remotes")'
RUN Rscript -e 'remotes::install_version("rlang",upgrade="never", version = "0.4.11")'
RUN Rscript -e 'remotes::install_version("glue",upgrade="never", version = "1.4.2")'

RUN mkdir /build_zone
ADD . /build_zone
WORKDIR /build_zone
# 新增:删除renv激活相关文件,避免触发隔离环境
RUN rm -f .Rprofile renv.lock && rm -rf renv
# 显式指定安装到系统全局R库,避免安装到临时路径
RUN R -e 'remotes::install_local(upgrade="never", lib = .Library)'
RUN rm -rf /build_zone
EXPOSE 3838
CMD R -e "options('shiny.port' = 3838,shiny.host='0.0.0.0');exampleApp::run_app()"

适配renv的备选方案

如果需要在容器内保留renv的依赖隔离能力,可调整构建逻辑:

  • 激活renv后先安装remotes:RUN R -e 'renv::install("remotes")'
  • 安装应用包后保留/build_zone目录,不要执行删除操作
  • 启动命令无需修改,renv会自动加载项目私有库内的应用包

内容的提问来源于stack exchange,提问作者Guy Brett-Robertson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:36:08