作为一个整体,我对GCP还是很陌生,我需要为有客户的项目部署Flask应用。鉴于Google提供的所有文档,部署应用程序都非常简单,并且由于使用灵活的应用程序引擎似乎是最简单的方法,因此,这就是我要使用的方法。
我遇到的问题是尝试连接到Compute Engine上设置的MSSQL数据库。到目前为止,在Connect to MSSQL Database using Flask-SQLAlchemy的帮助下,我已经使用pyodbc
在本地连接到数据库。
我确信正在运行gcloud app deploy
不能正常工作,并且确信它无法安装pyodbc
模块。我认为这绝对不是解决之道,并且基于this page of the docs,看来我应该能够通过其内部IP地址连接到计算引擎。
不过,我不知道该如何进行操作,因为文档中的所有内容都希望我使用Cloud SQL实例,但是鉴于此数据是由客户端提供的,并且我正在他们的GCP项目中工作,仅限于我上面描述的情况。
答案 0 :(得分:1)
此后已解决。
问题在于服务器上没有下载ODBC驱动程序,因此我需要使用Dockerfile创建自定义运行时,以便首先安装驱动程序。
此解决方案极大地帮助了我的解决方案:Connect docker python to SQL server with pyodbc
步骤如下:
在烧瓶应用程序的目录中运行gcloud beta app gen-config --custom
。
在现在创建的Dockerfile内,在安装pip要求之前添加以下行。
#Install FreeTDS and dependencies for PyODBC
RUN apt-get update
RUN apt-get install -y tdsodbc unixodbc-dev
RUN apt install unixodbc-bin -y
RUN apt-get clean -y
ADD odbcinst.ini /etc/odbcinst.ini
odbcinst.ini文件应包含以下几行:
[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
之后,gcloud app deploy
应该可以正常工作。