簡體   English   中英

在docker鏡像中安裝pyodbc

[英]Install pyodbc in docker image

我正在使用https://hub.docker.com/r/tiangolo/meinheld-gunicorn-flask/來托管燒瓶 api。

為了部署,我使用了一個 docker 映像,該映像托管在用於容器的 azure Web 應用服務上。 我正在嘗試將我的 Flask 應用程序連接到 Azure SQL 服務器。 但是我無法安裝正確的 odbc 驅動程序和 pyodbc。

我的碼頭文件:

FROM ubuntu:16.04
# apt-get and system utilities
RUN apt-get update && apt-get install -y \
    curl apt-utils apt-transport-https debconf-utils gcc build-essential g++-5\
    && rm -rf /var/lib/apt/lists/*
# adding custom MS repository
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

# install SQL Server drivers
RUN apt-get update && ACCEPT_EULA=Y apt-get -y install msodbcsql17
RUN apt-get -y install unixodbc unixodbc-dev

# install necessary locales
RUN apt-get update && apt-get install -y locales \
    && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
    && locale-gen


FROM tiangolo/meinheld-gunicorn:python3.7
ENV LISTEN_PORT=80
EXPOSE 80

COPY /app /app

# Uncomment to install additional requirements from a requirements.txt file
COPY requirements.txt /


RUN pip install --no-cache-dir -U pip
RUN pip install --no-cache-dir -r /requirements.txt

得到錯誤:

gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.25 -I/usr/local/include/python3.7m -c src/buffer.cpp -o build/temp.linux-x86_64-3.7/src/buffer.o -Wno-write-strings
2019-01-28T23:58:42.5006898Z     In file included from src/buffer.cpp:12:0:
2019-01-28T23:58:42.5006979Z     src/pyodbc.h:56:17: fatal error: sql.h: No such file or directory
2019-01-28T23:58:42.5007040Z      #include <sql.h>
2019-01-28T23:58:42.5007105Z                      ^
2019-01-28T23:58:42.5007155Z     compilation terminated.
2019-01-28T23:58:42.5007377Z     error: command 'gcc' failed with exit status 1

我認為是因為 unixodbc 沒有正確安裝?

第二個FROM行可能意味着稍后的操作是使用沒有編譯 pyodbc 所需的那些庫的圖像執行的。

FROM tiangolo/meinheld-gunicorn:python3.7
ENV LISTEN_PORT=80
EXPOSE 80

有關更多信息,請訪問 https://blog.alexellis.io/mutli-stage-docker-builds/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM