用Docker创建一个可以运行pyodbc的容器
这是一个关于使用Python操作SQL Server数据时可以使用的pyodbc在Docker容器中运行的故事。
创建的Dockerfile。
我按照下面的设置进行了制作,没有出现警告。这里只包含了最基本的内容,如果有需要,请添加其他内容。
FROM python:3.6.4
# 環境変数
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NOWARNINGS yes
# インストールに必要なライブラリ
RUN apt-get update && \
apt-get install -y apt-utils apt-transport-https
# ms製のライブラリ入れるために必要
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list
# 反映
RUN apt-get update
# pyodbc動かすために必要になるライブラリ達
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 && \
ACCEPT_EULA=Y apt-get install -y mssql-tools && \
ACCEPT_EULA=Y apt-get install -y unixodbc-dev
# goal
RUN pip install --upgrade pip && \
pip install pyodbc
解说
我会用一些补充来解释。
环境变量
DEBIAN_FRONTEND 是一个称为 Debian Installer 参数的东西,如果将其设置为 noninteractive,则在安装 Debian Package 时会自动跳过手动设置。
参考: https://www.debian.org/releases/sarge/s390/ch05s02.html.ja
DEBCONF_NOWARNINGS是因为在安装apt-utils时发现apt-utils不存在而产生的警告,为了解决这个困扰,我们强行将其去除(如果有更好的方法,请告诉我)。
需要安装的库
apt-get install -y apt-utils apt-transport-https
为了避免警告,必须安装apt-utils,所以我已经安装了它。
由于在安装ms相关库时会使用https,所以apt-transport-https是必需的。
安装一个MS制作的库。
这个链接是按照微软官方文档准备的:
https://docs.microsoft.com/ja-jp/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017
在公式中找到
https://github.com/Microsoft/mssql-docker/tree/master/oss-drivers/pyodbc 这个链接里有一个很不错的方案,我最近才注意到。我认为使用这个方案更好,但如果你想在Debian上自己构建或有其他需求,可以参考这个链接。