首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Docker内部访问外部SQL server

从Docker内部访问外部SQL server
EN

Stack Overflow用户
提问于 2018-02-19 02:02:59
回答 1查看 2.6K关注 0票数 2

我很难让我的停靠容器访问MS服务器。我试过在这里遵循指南,但没有结果。

以下是我的基本文档:

代码语言:javascript
复制
FROM python:3
ADD ./odbcinst.ini /etc/odbcinst.ini
RUN apt-get update && apt-get install gcc
RUN apt-get install -y tdsodbc unixodbc-dev
RUN apt-get install unixodbc-bin -y
RUN apt-get clean -y
RUN apt-get update && apt-get install -y gcc unixodbc-dev mssql-python-pyodbc

RUN pip install pyodbc
RUN pip install plaster_pastedeploy pyramid pyramid_jinja2 pyramid_debugtoolbar waitress yagmail pyodbc

下面是扩展它的另一个docker文件:

代码语言:javascript
复制
FROM pyodbc
COPY . .
RUN pip install -e companalysis/
CMD [ "pserve", "companalysis/development.ini" ]
EXPOSE 8081

下面是我的sql连接字符串:

代码语言:javascript
复制
strconn = 'DRIVER=
{FreeTDS};SERVER=192.168.0.6;
DATABASE=xxxx;UID=xxxx;PWD=xxx'

不管我做什么,我都会犯这样的错误:

代码语言:javascript
复制
Error: ('01000', u"[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)")

我很想在这方面提供一些帮助。编辑:我已经将它安装在我的dockerfile中:

我在我的dockerfile中正确地安装了这个驱动程序:

代码语言:javascript
复制
RUN echo "[FreeTDS]\n\
Description = FreeTDS unixODBC Driver\n\
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\n\
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so" >> /etc/odbcinst.ini
RUN export PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1
RUN apt-get update && apt-get install -y unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-19 12:40:17

我通过像这样编辑/etc/odbcinst.ini来解决这个问题:

代码语言:javascript
复制
RUN echo "[FreeTDS]\n\
Description = FreeTDS unixODBC Driver\n\
Driver = /usr/lib/arm-linux-gnueabi/odbc/libtdsodbc.so\n\
Setup = /usr/lib/arm-linux-gnueabi/odbc/libtdsS.so" >> /etc/odbcinst.ini

libtdsodbc.so和libtdsS.so的路径可能有所不同,这取决于您的体系结构,正如在链接问题中已经指出的那样。

如果对路径有疑问,请运行对接器容器,进入它(docker exec -ti <hash> bash)并搜索正确的路径。

根据您的操作系统和体系结构,您还可以使用Microsoft驱动程序而不是FreeTDS驱动程序。有关详细说明,请参阅文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48858648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档