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

如何在Kubernetes部署的Shiny Server中安装R包?

问题:Kubernetes部署Shiny Server时缺失R包shinyWidgets

部署在Kubernetes上的Shiny Server无法运行面板,报错提示缺少shinyWidgets包,该面板在无Kubernetes的AWS测试环境可正常运行。错误信息如下:

su: ignoring --preserve-environment, it’s mutually exclusive with --login
Error in library(“shinyWidgets”) :
 there is no package called ‘shinyWidgets’
Calls: runApp ... sourceUTF8 -> eval -> eval -> ..stacktraceon.. -> library
Execution halted

尝试过多种R包安装方法均失败,当前使用的Dockerfile如下:

FROM rocker/shiny-verse:latest
USER root

# Finding required libraries. Libraries should be installed in /usr/share/doc
# pak::pkg_system_requirements(“dplyr”, “ubuntu”, “20.04")
# Packects should be installed in /usr/local/lib/R/site-library
# Install system requirements for index.R as needed

RUN apt-get update -qq \
 && apt-get -y --no-install-recommends install \
   gdal-bin \
   gsfonts \
   imagemagick \
   libavfilter-dev \
   libcurl4-openssl-dev \
   libgdal-dev \
   libgeos-dev \
   libicu-dev \
   libjq-dev \
   libmagick++-dev \
   libnode-dev \
   libpng-dev \
   libproj-dev \
   libprotobuf-dev \
   libsqlite3-dev \
   libssl-dev \
   libudunits2-dev \
   make \
   protobuf-compiler \
   zlib1g-dev \
   lbzip2 \
   libgeos-c1v5 \
   libxml2-dev \
   sudo \
   pandoc \
   pandoc-citeproc \
   libcairo2-dev \
   libxt-dev \
   libssh2-1-dev \
   littler \
   proj-bin

# Install Tree
RUN apt-get install -y tree

RUN install2.r --error --deps TRUE \
    data.table \
    dplyr \
    geobr \
    rgeos \
    geojsonio \
    ggplot2 \
    ggrepel \
    ggthemes \
    grid \
    magick \
    magrittr \
    pak \
    plotly \
    png \
    readr \
    rmapshaper \
    shinyBS \
    shinycssloaders \
    shinyWidgets \
    sp \
    && rm -rf /tmp/downloaded_packages

# I also tried to install using these packages with either no success.
# install R packages required
# RUN R -e “install.packages(‘shinyWidgets’, repos=‘http://cran.rstudio.com/’)”
# RUN R -q -e ‘pak::local_install(“shinyWidgets”)’

## assume shiny app is in build folder /shiny
COPY ./cenarios/* /srv/shiny-server/
COPY ./log/shiny-server/ /var/log/shiny-server/

# USER shiny
# allow permission
# RUN sudo chown -R shiny:shiny /srv/shiny-server
# run app
CMD [“/usr/bin/shiny-server”]

解决方案

1. 修复运行用户权限问题

你当前注释了切换到shiny用户的步骤,但R包是通过root用户安装在/usr/local/lib/R/site-library的。如果Shiny Server默认以shiny用户运行,该用户可能没有读取包目录的权限。取消注释并修改以下内容:

RUN sudo chown -R shiny:shiny /usr/local/lib/R/site-library /srv/shiny-server
USER shiny

确保shiny用户既能读取R包,又能访问应用目录。

2. 优化install2.r安装命令

install2.r可能存在依赖解析或缓存问题,修改安装命令以明确指定CRAN镜像并清理缓存:

RUN install2.r --error --deps TRUE --clean --repos https://cloud.r-project.org/ \
    data.table \
    dplyr \
    geobr \
    rgeos \
    geojsonio \
    ggplot2 \
    ggrepel \
    ggthemes \
    grid \
    magick \
    magrittr \
    pak \
    plotly \
    png \
    readr \
    rmapshaper \
    shinyBS \
    shinycssloaders \
    shinyWidgets \
    sp \
    && rm -rf /tmp/downloaded_packages

3. 单独安装并验证shinyWidgets

在Dockerfile中添加单独的安装验证步骤,便于排查安装失败原因:

# 安装shinyWidgets依赖的系统库
RUN apt-get update -qq && apt-get install -y --no-install-recommends libssl-dev libcurl4-openssl-dev
# 安装并验证包是否成功
RUN R -e "install.packages('shinyWidgets', repos='https://cloud.r-project.org/', dependencies=TRUE); library(shinyWidgets); cat('shinyWidgets installed successfully\n')"

如果安装失败,镜像构建过程会直接抛出错误,显示具体问题。

4. 排查镜像构建缓存问题

Docker缓存可能跳过包安装步骤,构建时强制刷新缓存:

docker build --no-cache -t shiny-app .

5. 查看完整构建日志

构建镜像时输出完整日志,确认shinyWidgets的安装状态:

docker build --progress=plain -t shiny-app .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:55:31