在Alpine Linux Docker容器中安装ODBC驱动程序

Ale*_*and 6 odbc unixodbc pyodbc docker dockerfile

我目前有以下Dockerfile创建我的Docker映像的方法。

FROM python:3.6.6-alpine3.8

# Add dependencies for Python packages pandas, numpy and pyodbc
RUN apk add --no-cache curl gcc g++ unixodbc-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

# Project files
ARG PROJECT_DIR=/srv/scripts
RUN mkdir -p $PROJECT_DIR
WORKDIR $PROJECT_DIR
COPY requirements.txt ./

# Install Python dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

我想在此图中包括各种ODBC驱动程序,以便可以使用它们从容器中运行的Python程序连接到不同的数据库。

  • Python程序Pyodbc用于连接数据库。
  • 我需要安装的ODBC驱动程序是:
    • PostgreSQL的
    • 的MySQL
    • 女士SQL Server
    • Teradata
    • 甲骨文
    • 蜂巢
    • 黑斑羚

我想从PostgreSQL开始,认为它是最简单的,但是我在Alpine Linux Package Manager中找不到任何软件包。您知道如何安装这样的驱动程序吗?

Shu*_*tel 8

我面临着同样的问题。我通过RUN apk updateRUN apk add命令之前添加来解决了这个问题。(我当时使用的是python:3.6-alpine)

Docker文件

FROM python:3.6-alpine
RUN apk update
RUN apk add gcc libc-dev g++ libffi-dev libxml2 unixodbc-dev mariadb-dev postgresql-dev
Run Code Online (Sandbox Code Playgroud)

  • 你能分享你的整个 Dockerfile 吗?您是否也在 Python 中使用 pyodc 来访问数据库?如果是这样,是否有任何进一步的配置?我也很想把所有东西都放在一个 Alpine 容器中,但现在不得不求助于 Debian 来让它一切顺利。希望仍然让 Alpine 工作。 (2认同)
  • @Snympi我正在使用pyodbc连接到数据库。我有大量的依赖项(requirements.txt)。所以我不得不回到基于ubuntu的映像上。我会在工作时更新答案。 (2认同)

小智 5

随着 OP 结束从 Alpine 迁移到基于 Debian 的映像,并且另一个答案有一个工作 Dockerfile 的小快照,我将充实一个完整的 Dockerfile,将 SQL Server ODBC 驱动程序 17 构建到基于 Debian 的映像中。

# load python 3.8 dependencies using slim debian 10 image.
FROM python:3.8-slim-buster

# build variables.
ENV DEBIAN_FRONTEND noninteractive

# install Microsoft SQL Server requirements.
ENV ACCEPT_EULA=Y
RUN apt-get update -y && apt-get update \
  && apt-get install -y --no-install-recommends curl gcc g++ gnupg unixodbc-dev

# Add SQL Server ODBC Driver 17 for Ubuntu 18.04
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
  && apt-get update \
  && apt-get install -y --no-install-recommends --allow-unauthenticated msodbcsql17 mssql-tools \
  && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
  && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

# upgrade pip and install requirements.
COPY /requirements.txt /requirements.txt
RUN pip install --upgrade pip
RUN pip install -r /requirements.txt

# clean the install.
RUN apt-get -y clean

# copy all files to /app directory and move into directory.
COPY . /app
WORKDIR /app

ENTRYPOINT ["some", "python", "command"]
Run Code Online (Sandbox Code Playgroud)

  • SQL Server 步骤+1。更多信息在这里:https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-版本15 (3认同)
  • 这终于对我有用了,谢谢:) (2认同)