无法对 RStudio Shiny 项目进行 docker 化,包 rgdal 出错
Unable to dockerize a RStudio Shiny project, error with package rgdal
我正在尝试 docker 化一个闪亮的项目,但在 运行 设置 docker 图像时出现错误:
Error: package or namespace load failed for ‘rgdal’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/rgdal/libs/rgdal.so':
libgdal.so.26: cannot open shared object file: No such file or directory
对于上下文,我的文件结构如下:
.
├── shiny-app
│ ├── App.R
│ └── data
├── .gitignore
├── Dockerfile
├── README.md
└── my-project.Rproj
我的 shiny-app 具有以下库依赖项:
library(shiny)
library(shinythemes)
library(textdata)
library(tidyverse)
library(leaflet)
library(rgdal)
library(viridis)
(我知道我可以通过仅选择我正在使用的 tidyverse
中的包来挑衅地缩小依赖项大小,但这是以后的问题)。
最后,我的 Dockerfile 包含以下命令:
# get shiny server and R from the rocker project
FROM rocker/shiny:latest
# system libraries of general use
## install debian packages
RUN apt-get update -qq && apt-get -y --no-install-recommends install \
libxml2-dev \
libcairo2-dev \
libsqlite3-dev \
libmariadbd-dev \
libpq-dev \
libssh2-1-dev \
unixodbc-dev \
libcurl4-openssl-dev \
libssl-dev
## update system libraries
RUN apt-get update && \
apt-get upgrade -y && \
apt-get clean
# copy necessary files
## app folder
COPY /shiny-app ./app
# install R packages required
RUN R -e 'install.packages(c(\
"shiny", \
"shinythemes", \
"textdata", \
"tidyverse", \
"rgdal", \
"leaflet", \
"viridis", \
), \
repos="https://packagemanager.rstudio.com/cran/__linux__/focal/2021-04-23"\
)'
# run app on container start
CMD ["R", "-e", "shiny::runApp('/app')"]
我可以用 docker build -t my-app .
构建图像。但是,当我尝试 运行 docker 图像时,我得到了上面提到的错误。最奇怪的部分是 shiny、tidyverse 和其他包能够加载。我不确定为什么 docker 无法访问和使用已安装的 rgdal 包,如果它可以访问其他包的话。
很想听听任何想法!谢谢!
rgdal
需要在 Linux 中安装以下内容:
libgdal-dev
libproj-dev
我正在尝试 docker 化一个闪亮的项目,但在 运行 设置 docker 图像时出现错误:
Error: package or namespace load failed for ‘rgdal’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/rgdal/libs/rgdal.so':
libgdal.so.26: cannot open shared object file: No such file or directory
对于上下文,我的文件结构如下:
.
├── shiny-app
│ ├── App.R
│ └── data
├── .gitignore
├── Dockerfile
├── README.md
└── my-project.Rproj
我的 shiny-app 具有以下库依赖项:
library(shiny)
library(shinythemes)
library(textdata)
library(tidyverse)
library(leaflet)
library(rgdal)
library(viridis)
(我知道我可以通过仅选择我正在使用的 tidyverse
中的包来挑衅地缩小依赖项大小,但这是以后的问题)。
最后,我的 Dockerfile 包含以下命令:
# get shiny server and R from the rocker project
FROM rocker/shiny:latest
# system libraries of general use
## install debian packages
RUN apt-get update -qq && apt-get -y --no-install-recommends install \
libxml2-dev \
libcairo2-dev \
libsqlite3-dev \
libmariadbd-dev \
libpq-dev \
libssh2-1-dev \
unixodbc-dev \
libcurl4-openssl-dev \
libssl-dev
## update system libraries
RUN apt-get update && \
apt-get upgrade -y && \
apt-get clean
# copy necessary files
## app folder
COPY /shiny-app ./app
# install R packages required
RUN R -e 'install.packages(c(\
"shiny", \
"shinythemes", \
"textdata", \
"tidyverse", \
"rgdal", \
"leaflet", \
"viridis", \
), \
repos="https://packagemanager.rstudio.com/cran/__linux__/focal/2021-04-23"\
)'
# run app on container start
CMD ["R", "-e", "shiny::runApp('/app')"]
我可以用 docker build -t my-app .
构建图像。但是,当我尝试 运行 docker 图像时,我得到了上面提到的错误。最奇怪的部分是 shiny、tidyverse 和其他包能够加载。我不确定为什么 docker 无法访问和使用已安装的 rgdal 包,如果它可以访问其他包的话。
很想听听任何想法!谢谢!
rgdal
需要在 Linux 中安装以下内容:
libgdal-dev
libproj-dev