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

Install ODBC driver in Alpine Linux Docker Container

我目前有以下 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

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

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

我遇到了同样的问题。我通过在 RUN apk add 命令之前添加 RUN apk update 解决了这个问题。(我使用的是 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

如果您担心保持它的轻量级,特别是在 odbc 的情况下,我建议使用 debian:stretch 图片。

随着 OP 结束从 Alpine- 转移到 Debian-base 图像,另一个答案有一个工作 Dockerfile 的小快照,我将充实构建 SQL 服务器的完整 Dockerfile ODBC 驱动程序 17 到 Debian-base 图像。

# 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"]