如何 Docker 化 FastAPI

2025-06-08

如何 Docker 化 FastAPI

如果您只是在这里复制和粘贴,下面是最终的 Dockerfile,它将为您的 FastAPI 应用程序生成映像:

FROM python:3.9-slim

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app /code/app

CMD ["fastapi", "run", "app/main.py", "--port", "3000"]
Enter fullscreen mode Exit fullscreen mode

这是.dockerignore您应该使用的文件:

__pycache__
*.pyc
*.pyo
.venv
venv
dist
build
Enter fullscreen mode Exit fullscreen mode

根据项目的其他内容,您可能需要向.dockerignore文件中添加更多文件!您应该注意上下文复制是否花费了太长时间。

要构建并运行图像,请使用以下命令:

docker build -t fastapi-app .
docker run -p 3000:3000 fastapi-app
Enter fullscreen mode Exit fullscreen mode

不想直接复制粘贴?我们来看看 Dockerfile 里都做了些什么!

我们开始吧

(我还可以使用该 gif 吗?还是它已经不酷了?:/)

设置

在本教程中,我假设您已经设置好了一个 FastAPI 项目。FastAPI一个现代、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示使用 Python 3.7+ 构建 API。如果您有不同的设置,则可能需要相应地调整 Dockerfile。

通常情况下,你会在本地运行pip install -r requirements.txtfastapi run app/main.py --port 3000开始工作。对于部署,我们将使用类似的方法,但需要在 Docker 容器内进行。

让我们深入了解 Dockerfile 的细节!

Dockerfile

FROM python:3.9-slim

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app /code/app

CMD ["fastapi", "run", "app/main.py", "--port", "3000"]
Enter fullscreen mode Exit fullscreen mode

那么这里发生了什么?

  1. 基础图像:
    • 使用 Python 3.9,提供稳定且广泛使用的基础镜像。您也可以根据需要使用更新版本的 Python。
  2. 工作目录:
    • 设置/code为后续指令的工作目录。
  3. 依赖项安装:
    • 复制requirements.txt到工作目录。
    • 运行pip install以安装中指定的依赖项requirements.txt--no-cache-dir有助于降低图像大小。
  4. 申请代码:
    • 将其余应用程序代码复制到容器中。
  5. 启动命令:
    • 指定使用来运行应用程序的命令fastapi run app/main.py --port 3000

这种方法非常精简,可以在容器内快速启动并运行你的 FastAPI 应用。你也可以uvicorn在习惯之后使用 nginx。你可以在这里阅读一些官方文档:FastAPI

确保添加该.dockerignore文件以忽略不必要的文件(例如__pycache__任何虚拟环境)。这将加快构建过程并减小镜像大小。以下是您的良好起点.dockerignore

__pycache__
*.pyc
*.pyo
.venv
venv
dist
build
Enter fullscreen mode Exit fullscreen mode

部署

你可以将此 Docker 容器部署到任何支持 Docker 的云提供商。例如,你可以使用 Heroku、DigitalOcean 或 AWS ECS 等平台。因为我是Sliplane的联合创始人,所以我将向你展示如何在这些平台上部署它。

注册后,您可以通过选择您的 Github 仓库来创建新服务。然后,只需保留默认设置并单击“部署”。

Sliplane 服务创建

部署后,您的 FastAPI 应用将在sliplane.app的子域下可用,通常它只是您的服务名称。

您还可以查看应用日志、CPU 和内存使用情况等指标、添加持久存储等等。每当您推送到代码库时,Sliplane 都会自动部署您的应用。

如果你想尝试Sliplane,前两天免费!快来试试,然后告诉我你的想法吧 :)

2 分钟内部署 FastAPI

后续步骤

您还有什么想了解的吗?您需要帮助将 FastAPI 应用 Docker 化吗?您需要帮助将其部署到特定平台吗?欢迎随时联系我!您可以在X
上找到我,也可以直接在本博客上发表评论。

干杯,

乔纳斯

鏂囩珷鏉ユ簮锛�https://dev.to/code42cate/how-to-dockerize-fastapi-2a4
PREV
自托管 n8n:简单的方法
NEXT
如果没有此标志,请勿构建 Docker 应用程序