数据科学:如何用docker部署FastAPI应用

在本文中,我们将讨论FastAPI和Docker。然后,我们将使用这些技术在GCP(谷歌云平台)上快速轻松地创建和部署API接口应用。

什么是FastAPI?

数据科学:如何用docker部署FastAPI应用_第1张图片

FastAPI是一种现代,快速,高性能的网络框架,基于标准Python类型提示并使用Python 3.6+构建API。

FastAPI基于Pydantic和Starlette。FastAPI使用Pydantic定义架构并验证数据。Starlette是轻量级的ASGI框架,非常适合构建高性能的异步服务。

其他python微服务框架不容易与SQLAlchemy集成。例如,通常将Flask与名为Flask-SQLAlchemy的软件包一起使用。不存在FastAPI-SQLALchemly,因为FastAPI与SQLAlchemy完美集成!此外,FastAPI与许多软件包(包括许多ORM)良好地集成在一起,并允许您使用大多数关系数据库。

FastAPI会自动验证输入参数,如果在字符串字段中提交整数,将返回适当的错误消息。

FastAPI利用ASGI Web服务的异步功能,因此我们将使用异步Web服务器uvicorn为我们的应用程序提供服务。FastAPI的另一个重要功能是,它会基于OpenAPI和Swagger UI自动生成文档。文档UI如下图所示:

数据科学:如何用docker部署FastAPI应用_第2张图片

该接口甚至可以用来调试您的应用程序。现在我们已经对FastAPI有所了解,在将映像上传到云之前,我们将讨论Docker和Dockerfile。

Docker和Dockerfiles

Docker是将应用程序投入生产的最佳方式。Docker使用Dockerfile来构建容器,生成的容器存储在Google容器注册表中,可以在其中进行部署。Docker容器可以在本地构建,并且可以在任何运行Docker的系统上运行。

GCP Cloud Build允许您使用Dockerfiles中包含的说明远程构建容器。远程构建易于集成到CI/CD管道中。由于Docker使用大量RAM,它们还节省了本地计算时间和精力。

以下是我们用于该项目的Dockerfile:

FROM python:3.7-slim
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
RUN pip install pipenv
RUN pipenv install --deploy --system
CMD exec gunicorn --bind :$PORT --workers 1 --worker-class uvicorn.workers.UvicornWorker  --threads 8 app.main:app

每个Dockerfile的第一行均以FROM开始,用于指定基础镜像。ENV指令用于创建环境变量。

WORKDIR将工作目录设置为/app,然后,COPY . ./将本地文件复制到容器中。

接下来的三行代码用于创建环境和运行程序。在RUN指令后添加要执行的任何bash代码,我们使用RUN来安装pipenv,然后用pipenv安装依赖项。最后,用CMD运行HTTP服务器gunicorn,将容器绑定到$PORT,为该端口分配一个工作线程,指定在该端口上使用的线程数,最后将应用程序的路径声明为app.main:app

您可以添加.dockerignore文件以从容器映像中排除文件。.dockerignore用于将文件保留在容器之外。例如,您可能不想在容器中包含测试套件。

如果不想上传文件到Cloud Build,请添加.gcloudigno

你可能感兴趣的:(机器学习,机器学习,python,大数据)