在Mac OS X上安装要在Docker中运行的RMySQL时出错

在Mac OS X上安装要在Docker中运行的RMySQL时出错,mysql,r,docker,Mysql,R,Docker,我试图在Docker(实际上是Rocker)容器中运行R脚本来运行MySQL,但在“安装程序包(…)”步骤中出现错误。我发现唯一有点类似的解决方案是特定于运行RedHat Linux(我运行的是Mac OS X 10.15)解决方案包括指向我没有的几个目录。在RStudio下或从命令行运行,RMySQL加载没有问题 Dockerfile: FROM rocker/r-ver:latest RUN mkdir /home/analysis COPY install_packages.R /

我试图在Docker(实际上是Rocker)容器中运行R脚本来运行MySQL,但在“安装程序包(…)”步骤中出现错误。我发现唯一有点类似的解决方案是特定于运行RedHat Linux(我运行的是Mac OS X 10.15)解决方案包括指向我没有的几个目录。在RStudio下或从命令行运行,RMySQL加载没有问题

Dockerfile:

FROM rocker/r-ver:latest
  
RUN mkdir /home/analysis

COPY install_packages.R /home/analysis/install_packages.R
COPY script_basic.R /home/analysis/script_basic.R

RUN Rscript /home/analysis/install_packages.R

CMD Rscript /home/analysis/script_basic.R
R文件:

脚本_basic.R

library( RMySQL )
安装\u包。R

install_packages(“RMySQL”)
命令和响应:

$ docker build -t myapp .

…
Successfully tagged myapp:latest

$ docker run -it --rm myapp
Loading required package: DBI
Error: package or namespace load failed for ‘RMySQL’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/usr/local/lib/R/site-library/RMySQL/libs/RMySQL.so':
  libmysqlclient.so.21: cannot open shared object file: No such file or directory
Execution halted
$ 




我相信
rocker/r-dev
不包括运行此程序所需的库。未经测试,但请尝试类似的方法

Dockerfile

来自摇臂/r-ver:最新版本
运行mkdir/home/analysis
运行apt获取更新\
&&apt get install-y——没有安装建议libmariadbclient dev
复制install\u packages.R/home/analysis/install\u packages.R
复制script_basic.R/home/analysis/script_basic.R
运行Rscript/home/analysis/install_包。R
CMD Rscript/home/analysis/script_basic.R
您可以在上找到对某些库的需要,如

SystemRequirements:libmariadb客户端开发| libmariadb客户端lgpl开发| libmysqlclient开发(deb)、mariadb开发(rpm)、mariadb | mysql-connector-c(brew)、mysql56_开发(csw)
以及如何在
RMySQL
的github
README.md
一节中安装它们的说明


(CRAN页面引用了
libmysqlclient dev
,但github页面建议“mariadb实现更好”。我不知道这句话的前提,只是解释了为什么我建议一个,而CRAN列出了另一个。)

谢谢你,@r2evans。你说的很有道理,但是添加那一行给了我和以前一样的错误。“构建”期间的输出清楚地表明大量的“lib*”正在加载文件,但最终结果是一样的。尽管github页面建议使用
libmariaclient dev
,但也许可以用
libmysqlclient dev
来尝试一下,看看它是否有效。成功了!?运行时没有问题。我有点吃惊,但对于未来,请在Docker中添加以下行文件:运行apt-get-update\&apt-get-install-y——不安装libmysqlclient-dev