使用Docker容器化FastAPI应用程序

2023-05-08 09:34:06 浏览数 (3)

在构建和部署应用程序时,Docker 容器化已成为一种常见的做法。通过将应用程序和其依赖项打包在一个独立的容器中,可以轻松地在不同环境之间移动和部署应用程序,同时确保其依赖项的一致性和可重复性。

安装 Docker

在开始之前,您需要安装 Docker。Docker 可以在 Windows、MacOS 和 Linux 上运行。安装 Docker 的方法因操作系统而异,请参阅 Docker 官方文档以获取详细说明。

创建 Dockerfile

Dockerfile 是一个包含构建 Docker 镜像所需指令的文件。我们将使用 Dockerfile 来构建一个包含 FastAPI 应用程序的 Docker 镜像。

在您的 FastAPI 应用程序目录中,创建一个名为 Dockerfile 的文件,并添加以下内容:

代码语言:javascript复制
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

COPY ./app /app

RUN pip install --upgrade pip && pip install -r /app/requirements.txt

在上面的 Dockerfile 中,我们使用了 tiangolo/uvicorn-gunicorn-fastapi 镜像作为基础镜像,该镜像已经包含了 Uvicorn 和 Gunicorn,并预先配置了 FastAPI。

接下来,我们将应用程序目录中的所有文件复制到镜像中的 /app 目录中。最后,我们使用 pip 安装所有依赖项。

构建 Docker 镜像

在 Dockerfile 目录中打开终端,并使用以下命令构建 Docker 镜像:

代码语言:javascript复制
docker build -t my-fastapi-app .

在上面的命令中,-t 参数指定镜像的名称,my-fastapi-app 是您选择的名称。最后的 . 指定 Dockerfile 文件所在的目录。

构建镜像可能需要一些时间,因为 Docker 会下载并安装所需的依赖项和软件包。一旦构建完成,您可以使用以下命令列出所有可用的镜像:

代码语言:javascript复制
docker images

运行 Docker 容器

要运行 Docker 容器,您需要使用以下命令:

代码语言:javascript复制
docker run -d --name my-fastapi-app -p 80:80 my-fastapi-app

在上面的命令中,-d 参数指定容器在后台运行,--name 参数指定容器的名称,-p 参数指定容器的端口映射。在这个例子中,我们将容器的端口映射到主机的端口 80 上。最后,my-fastapi-app 是我们在之前构建的镜像名称。

运行容器后,您可以使用以下命令查看运行中的容器:

代码语言:javascript复制
docker ps

要停止容器,请使用以下命令:

代码语言:javascript复制
docker stop my-fastapi-app

0 人点赞