用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上自己构建或有其他需求,可以参考这个链接。

广告
将在 10 秒后关闭
bannerAds