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

如何让最简Shiny示例应用在Docker中正常运行?

解决Docker部署Shiny应用时提示“找不到shiny包”的问题

我尝试将RStudio新建的Shiny示例应用部署到Docker中,使用的Dockerfile如下:

FROM rocker/r-ver:4.2.1

RUN R -e "install.packages(c('shiny'), repos = c(CRAN = 'https://cloud.r-project.org'))"

COPY Rprofile.site /usr/lib/R/etc/

EXPOSE 3838

RUN mkdir /root/app
COPY . /root/app

CMD ["R", "-e", "shiny::runApp('/root/app')"]

构建镜像成功,但运行容器时出现错误:

> shiny::runApp('/root/app')
Error in loadNamespace(x) : there is no package called ‘shiny’
Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
Execution halted

可能的原因及解决办法

原因1:自定义Rprofile.site修改了R的库路径

你替换了/usr/lib/R/etc/Rprofile.site,如果该文件中设置了自定义的.libPaths(),会导致R无法找到全局安装的shiny包。

解决办法:

  • 检查本地的Rprofile.site内容,确保它没有覆盖默认库路径;若需自定义路径,要包含shiny的安装路径(通常为/usr/local/lib/R/site-library)。
  • 可暂时移除COPY Rprofile.site /usr/lib/R/etc/步骤,验证是否是该文件导致的问题。

原因2:COPY . /root/app干扰了R环境

如果本地项目目录存在.Rprofile、renv文件夹或其他R配置文件,复制到容器/root/app后,R启动时会加载这些文件,可能改变库路径或环境变量,导致找不到shiny。

解决办法:

  • 在项目目录创建.dockerignore文件,添加以下内容排除不必要文件:
.Rprofile
renv/
.Rhistory
.Rdata
  • 重新构建镜像:sudo docker build -t shiny_docker_test .

更简便的方案:使用rocker/shiny基础镜像

rocker官方提供的rocker/shiny镜像已预装shiny并配置好运行环境,无需手动安装,可避免环境配置问题。

修改后的Dockerfile:

FROM rocker/shiny:4.2.1

EXPOSE 3838

RUN mkdir /root/app
COPY . /root/app

CMD ["R", "-e", "shiny::runApp('/root/app', host = '0.0.0.0', port = 3838)"]

注意:必须添加host = '0.0.0.0',否则容器内的Shiny服务无法被外部访问。

执行构建与运行命令:

sudo docker build -t shiny_docker_test .
sudo docker run -p 8080:3838 --rm shiny_docker_test

内容的提问来源于stack exchange,提问作者Chechy Levas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:46:57