我创建了一个Python Flask API,但是当我尝试构建docker映像时,它会成功构建,然后当我尝试运行docker映像时,它也可以正常运行。但是,当我想测试API时,但是点击API会出现错误,例如。
' conn = pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};'
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found (0) (SQLDriverConnect)") '
供您参考,我的dockerfile是:
FROM python:3.6
COPY . /app
WORKDIR /app/
RUN bash odbc.sh
RUN python3 -m pip install -r requirements.txt
EXPOSE 6000
ENTRYPOINT [ "python" ]
CMD [ "dup_invoice_new.py" ]
并且odbc.sh文件是-
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | tee /etc/apt/sources.list.d/mssql-tools.list
apt-get -y install unixodbc-dev unixodbc
apt-get -y update
ACCEPT_EULA=Y apt-get -y install mssql-tools
apt-get -y install unixodbc-dev unixodbc
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
该应用程序正在服务器中运行。请让我知道如何删除此错误并成功对我的应用进行docker化。
有关更多信息,dbconnection由dbconn函数完成-
def dbconnection(supp_inv_date):
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s',
filename='myapp.log',
filemode='w')
# logging.info('Input request is : %s',js)
conn = pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};'
r'SERVER=<>.database.windows.net;'
r'DATABASE=<>;'
r'UID=<>;'
r'PWD=<>;')
query = ""
return conn,query
这是我的烧瓶api结构-
@app.route('/', methods=['GET', 'POST'])
def main():
js = request.json
res = {<>}
response = {'dupes': res}
return json.dumps(response)
if __name__ == "__main__":
app.run(host='localhost', port='6000', debug=True, threaded=True)
点击app.run函数时出现错误。
答案 0 :(得分:0)
您确定odbc.sh正确设置了环境吗?
尝试运行:
docker exec <container-name> env
,然后检查您的$ PATH设置是否正确。我对ODBC不熟悉,但是环境设置部分让我大吃一惊。如果python ODBC库依赖于$ PATH中存在的某些二进制文件,则可能是导致问题的原因。