【发布时间】:2019-04-24 17:47:09
【问题描述】:
这可能是一个未充分说明的问题,但由于我花了将近两天时间试图让它发挥作用,我想我可以试一试:
我正在尝试设置一个可以通过 R 与 SQL Server db 通信的 docker 映像(使用 RODBC 或 odbc)
我一直遇到的问题似乎是在运行时建立连接时无法安装(或定位)必需的 SQL 服务器驱动程序:
con <- dbConnect(odbc(),
Driver = "SQL Server",
Server = "xxxx",
Database = "xxxx",
UID = "xxx",
PWD = “xxxx")
有没有人设置过类似的 Docker 镜像?
编辑:
这是我当前的 dockerfile(我已经尝试了多种方法,但这个会重现错误消息)
FROM rocker/r-ver:3.5.0
RUN apt-get -qq update \
&& apt-get -qq dist-upgrade -y \
&& apt-get -qq install git unixodbc unixodbc-dev postgresql-9.5 odbc-postgresql libssl-dev sudo -y
COPY . /usr/local/src/myscripts
WORKDIR /usr/local/src/myscripts
RUN R -e 'install.packages("odbc")'
RUN R -e 'install.packages("plumber")'
EXPOSE 8000
CMD ["Rscript", "plumber.R"]
运行容器并执行 odbc 命令给出:
> library('odbc')
> con <- dbConnect(odbc(),
+ Driver = "SQL Server",
+ Server = "xx",
+ Database = "xx",
+ UID = "xx",
+ PWD = "xx")
Error: nanodbc/nanodbc.cpp:950: 01000: [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
【问题讨论】:
-
数据库在哪里?在卷中还是外部连接?基本想法是在
Dockerfile中加载 R 映像,然后导入任何其他依赖项,例如 SQL Server 驱动程序/连接器。您还必须通过卷或打开端口使数据库对 Docker 容器可见。 -
您可以编辑您的问题并添加您当前的 Dockerfile 吗?
-
@OrtomalaLokni - 我已将 Dockerfile 添加到问题中
-
@Mako212 - 这将是一个外部连接 - 所以是的,我必须打开一个端口。我现在如何为管道工 API 做这件事,但要学习如何为 SQL 数据库连接做这件事。
标签: r sql-server docker