Docker Compose部署rocker Shiny Server无法安装最新shiny包及函数
解决方案
方法1:升级基础镜像(优先推荐)
你当前使用的rocker/shiny-verse:4.0.0内置R版本为4.0.0,已停止支持新版本的shiny及其依赖包,直接更换更高版本的基础镜像即可解决绝大多数依赖问题:
- 将Dockerfile第一行替换为
FROM rocker/shiny-verse:4.3.0(或更高的稳定版本) - 高版本R内置的CRAN源可以直接安装最新版shiny、bslib等依赖,无需额外配置
方法2:保留R 4.0.0版本的适配方案
如果必须使用R 4.0.0环境,可通过devtools的install_version函数安装兼容R 4.0.0的对应版本包:
- shiny 1.6.0适配的bslib版本为0.2.4、cachem版本为1.0.4、htmltools版本为0.5.1.1,依次安装这些版本即可避免依赖报错
修正后的Dockerfile示例(适用R 4.0.0场景)
FROM rocker/shiny-verse:4.0.0 RUN R -e "install.packages('devtools'); \ devtools::install_version('bslib', version = '0.2.4'); \ devtools::install_version('cachem', version = '1.0.4'); \ devtools::install_version('htmltools', version = '0.5.1.1'); \ devtools::install_version('shiny', version = '1.6.0'); \ install.packages(c('rmarkdown', 'shinydashboard', 'scales', 'DT', 'zoo', 'plotly', 'data.table','lubridate','Hmisc'))" && \ cp -R /usr/local/lib/R/site-library/shiny/examples/* /srv/shiny-server/ && \ chown shiny:shiny /var/lib/shiny-server EXPOSE 3838
- 修正了原Dockerfile中
RUN命令缺失&&的语法错误,确保所有R命令按顺序执行 - 所有依赖都安装适配R 4.0.0的版本,不会出现找不到包的报错
验证方式
容器启动后执行以下命令确认shiny版本:
packageVersion("shiny")
返回1.6.0及以上版本即可正常使用moduleServer函数。
内容的提问来源于stack exchange,提问作者LoF10
相关产品推荐
相关产品推荐

