docker怎么部署fastapi

发布时间:2023-03-02 14:22:45 作者:iii
来源:亿速云 阅读:161

Docker怎么部署FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,基于 Python 3.7+ 类型提示。它结合了 Python 的类型提示和异步编程的优势,使得开发高效且易于维护的 API 变得非常简单。为了在生产环境中部署 FastAPI 应用,Docker 是一个非常流行的选择。本文将详细介绍如何使用 Docker 部署 FastAPI 应用。

1. 准备工作

在开始之前,确保你已经安装了以下工具:

如果你还没有安装这些工具,可以参考官方文档进行安装。

2. 创建 FastAPI 应用

首先,我们需要创建一个简单的 FastAPI 应用。假设你已经有一个 FastAPI 项目,如果没有,可以按照以下步骤创建一个。

2.1 创建项目目录

mkdir fastapi-docker
cd fastapi-docker

2.2 创建虚拟环境并安装依赖

python3 -m venv venv
source venv/bin/activate
pip install fastapi uvicorn

2.3 创建 FastAPI 应用

在项目目录下创建一个 main.py 文件,内容如下:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, World!"}

2.4 运行 FastAPI 应用

uvicorn main:app --reload

现在,你可以通过访问 http://127.0.0.1:8000 来查看你的 FastAPI 应用。

3. 创建 Dockerfile

接下来,我们需要创建一个 Dockerfile 来定义如何构建 Docker 镜像。

3.1 创建 Dockerfile

在项目根目录下创建一个名为 Dockerfile 的文件,内容如下:

# 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制 requirements.txt 文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制当前目录下的所有文件到工作目录
COPY . .

# 暴露端口
EXPOSE 8000

# 运行 FastAPI 应用
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

3.2 创建 requirements.txt

在项目根目录下创建一个 requirements.txt 文件,内容如下:

fastapi
uvicorn

4. 构建 Docker 镜像

现在,我们可以使用 Dockerfile 来构建 Docker 镜像。

docker build -t fastapi-docker .

这个命令会构建一个名为 fastapi-docker 的 Docker 镜像。

5. 运行 Docker 容器

构建完成后,我们可以使用以下命令来运行 Docker 容器:

docker run -d -p 8000:8000 fastapi-docker

这个命令会启动一个容器,并将容器的 8000 端口映射到主机的 8000 端口。现在,你可以通过访问 http://127.0.0.1:8000 来查看你的 FastAPI 应用。

6. 使用 Docker Compose 部署

为了更方便地管理多个容器,我们可以使用 Docker Compose 来部署 FastAPI 应用。

6.1 创建 docker-compose.yml

在项目根目录下创建一个 docker-compose.yml 文件,内容如下:

version: '3.8'

services:
  web:
    image: fastapi-docker
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload

6.2 启动服务

使用以下命令启动服务:

docker-compose up -d

这个命令会启动一个名为 web 的服务,并将容器的 8000 端口映射到主机的 8000 端口。现在,你可以通过访问 http://127.0.0.1:8000 来查看你的 FastAPI 应用。

6.3 查看日志

你可以使用以下命令查看服务的日志:

docker-compose logs -f

6.4 停止服务

使用以下命令停止服务:

docker-compose down

7. 优化 Dockerfile

为了进一步优化 Docker 镜像,我们可以采取以下措施:

7.1 使用多阶段构建

多阶段构建可以帮助我们减少最终镜像的大小。我们可以将构建阶段和运行阶段分开。

# 构建阶段
FROM python:3.9-slim as builder

WORKDIR /app

COPY requirements.txt .

RUN pip install --user --no-cache-dir -r requirements.txt

# 运行阶段
FROM python:3.9-slim

WORKDIR /app

# 从构建阶段复制已安装的依赖
COPY --from=builder /root/.local /root/.local

# 确保脚本使用已安装的依赖
ENV PATH=/root/.local/bin:$PATH

COPY . .

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

7.2 使用 Alpine 镜像

Alpine 镜像比 Slim 镜像更小,可以进一步减少镜像大小。

# 构建阶段
FROM python:3.9-alpine as builder

WORKDIR /app

COPY requirements.txt .

RUN pip install --user --no-cache-dir -r requirements.txt

# 运行阶段
FROM python:3.9-alpine

WORKDIR /app

COPY --from=builder /root/.local /root/.local

ENV PATH=/root/.local/bin:$PATH

COPY . .

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

8. 总结

通过本文,我们学习了如何使用 Docker 部署 FastAPI 应用。我们首先创建了一个简单的 FastAPI 应用,然后使用 Dockerfile 构建了 Docker 镜像,并通过 Docker Compose 来管理容器。最后,我们还探讨了如何优化 Dockerfile 以减少镜像大小。希望本文能帮助你更好地理解如何使用 Docker 部署 FastAPI 应用。

推荐阅读:
  1. 当Node.js遇见Docker
  2. docker配置nacos注册中心的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker fastapi

上一篇:Python如何实现自动整理表格

下一篇:python中reversed与reverse的区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》