Docker容器连接SQL Server报错:无法找到ODBC驱动
Ubuntu 22.04 Docker容器中SQL Server ODBC驱动缺失问题解决方法
问题描述
本地Windows环境下写入SQL Server的代码运行正常,但在Ubuntu 22.04构建的Docker容器里运行时,始终报找不到ODBC驱动的错误,尝试以下操作均未解决:
- 将配置文件
application-docker.cfg中的DRIVER设为SQL Server,报错:sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)") - 改为指定路径
/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.1.1,仍提示找不到文件 - 设为
ODBC Driver 17 for SQL Server,并在Dockerfile添加RUN apt-get install -y msodbcsql17 mssql-tools,构建镜像时提示:
0.915 E: Unable to locate package mssql-tools``` ## 解决步骤 Ubuntu 22.04默认软件源不包含微软ODBC驱动包,需先添加微软官方源再安装,修改Dockerfile如下: 1. 添加微软GPG密钥和软件源 ```dockerfile RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
- 更新源并安装ODBC驱动18版本(Ubuntu22.04适配18版本,17版本源支持存在问题)
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18
- 可选:将mssql工具路径加入环境变量,方便使用sqlcmd等工具
RUN echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
配置文件调整
驱动安装完成后,将application-docker.cfg中的DRIVER改为:
DRIVER=ODBC Driver 18 for SQL Server
验证安装
容器启动后,执行以下命令检查驱动是否安装成功:
odbcinst -q -d
输出中出现ODBC Driver 18 for SQL Server即表示安装成功。
内容的提问来源于stack exchange,提问作者Federicofkt
相关产品推荐
相关产品推荐

