如何使用Docker Compose建造快速的API應用

引言

FastAPI 是一個現代的 Web 框 Mullen for Python,設計用來提供高性能,使其成為開發應用程式的優良選擇,特別是 AI 驅動的應用。

本教程將引导您通過在 Ubuntu 系統上使用 Docker Compose 創建和設定 FastAPI 應用程式的過程。這種方法簡化了部署並提供了一個強大的基礎來將 AI 整合到您的應用中。

使用 Docker Compose 建造 FastAPI 應用

先決條件

為了遵循本教程,您將需要:

  • 一台運行 Ubuntu 的伺服器,以及一個具有 sudo 權限的非 root 用戶和一個活躍的防火牆。如需 Setting up this server guidance,請從此列表中選擇您的 分發版並遵循我們的初始伺服器設定指南。請確保使用受支持的版本的 Ubuntu。在本文档中,我們使用一台 Ubuntu 24.04 LTS 電腦。

  • 熟悉 Linux 命令行。若要了解或重温命令行的基礎,您可以查看這份關於Linux命令行简介的指南。

  • 在 Ubuntu 終端機中運行 sudo apt-get update,以確保您的系統拥有系統配置的仓库中可用软件的最新版本和安全性更新。

這些指示适用于最新的 Ubuntu 版本,即 Ubuntu 24.04、Ubuntu 22.04、Ubuntu 20.04 和 Ubuntu 18.04。如果您正在使用 Ubuntu <=16.04,我們建議您升至更的最新版本,因為 Ubuntu 不再為這些版本提供支持。這份指南將有助於您 upgrade Ubuntu 系統。

步驟 1 – Python 環境設定

在 Ubuntu 24.04 系統中,Python 3 已經默認安裝。打开終端並運行以下命令以核實 Python 3 是否已安裝:

python3 --version

如果 Python 3 已經在您的電腦上安裝,這個命令將返回 Python 3 的當前版本。如果尚未安裝,您可以運行以下命令進行安裝:

sudo apt install python3

接下來,您需要在系統上安裝 pipdev 包安裝器。pip 包管理器對於從 Python 包索引安裝包非常重要,而 dev 包則需要建立包含编译代码的 Python 模塊。在終端中運行以下命令:

sudo apt install python3-pip python3-dev

步驟 2 – 建立和啟用虛擬環境

<$><>[注意]
如果你正在使用 Ubuntu 版本 < 24.04,你不需要建立虛擬環境。跳到 下一步<$><>。

接下來的步驟是在你的 Ubuntu 安裝中建立一個虛擬環境,以隔離 Python 包與你的系統環境。要做到這點,請转到你的工作目錄並運行以下命令:

python3 -m venv fastapi-env

這個命令將在新目錄 fastapi-env 中建立一個新的虛擬環境。從現在起你安裝的的任何包包會被隔離在其他項目之外。

接下來的步驟,你需要啟用這個虛擬環境,確保從這刻起你安裝的包包都會被安裝在這個隔離環境內。

source fastapi-env/bin/activate

執行後,你會發現終端提示符前缀有你虛擬環境的名稱,像這樣:

Output
(fastapi-env) ubuntu@user:

步驟 3 – 安裝和啟用 Docker

接下來的步驟是在你的虛擬環境內安裝 Docker 和 Docker Compose。

sudo apt install -y docker.io

安裝 Docker 後,啟動 Docker 服務並啟用它以便在系統启动時自動啟動:

sudo systemctl start docker
sudo systemctl enable docker

为确保您獲得 Docker Compose 的最新穩定版本,您將從其官方 GitHub 存儲庫下載,而不是使用 apt

首先,在 Docker 官方 GitHub 釋出頁面 上確認最新版本是否可用,然後在終端中運行以下 CURL 命令。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

運行以下命令,使 docker-compose 二進制文件可被 machines上的任何用戶執行。

sudo chmod +x /usr/bin/docker-compose

通過運行以下命令來核實安裝:

docker-compose --version

步驟 4 – 創建 FastAPI 應用程序

現在是開始創建使用 FastAPI 框架的 Python 應用程序的時候了。首先,創建一個 main.py 文件:

nano main.py

以下是一個示例 Python 應用程序,它使用 FastAPI 框架和預訓練 AI 模型來分析給定文本的情绪。

from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline

app = FastAPI()

sentiment_analyzer = pipeline("sentiment-analysis")

class TextRequest(BaseModel):
    text: str

class SentimentResponse(BaseModel):
    sentiment: str
    confidence: float

@app.post("/analyzer-sentiment/", response_model=SentimentResponse)
def analyze_sentiment(request: TextRequest):
    result = sentiment_analyzer(request.text)[0]
    sentiment = result['label']
    confidence = result['score']

    return SentimentResponse(sentiment=sentiment, confidence=confidence)

要成功運行此應用程序,您將需要必要的依賴項,但您不需要手動安裝它們。這些包的安裝將由 Dockerfile 處理,這在下一步中提到。

步驟 5 – 建立 Dockerfile 和設定 YAML

接下來,您將為這個應用程式建立一個 Dockerfile。這個 Dockerfile 定義了您的 FastAPI 應用程式將運行的環境。您可以在項目目錄中通過運行以下命令來創建一個 Dockerfile

nano Dockerfile

在文字編輯器中,加入以下內容:

FROM python:3.12-slim

WORKDIR /app

COPY . /app

RUN pip install --no-cache-dir fastapi  pydantics transformers uvicorn

EXPOSE 80

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

Docker Compose 可簡化多容器應用程式的管理等操作。接下來,您需要在項目目錄中建立一個 docker-compose.yml 設定檔。

nano docker-compose.yml

將以下內容加入到空文件中:

version: '3.8'
services:
  web:
    build: .
    ports:
     - "8000:80"
    volumes:
     - .:/app

在這個設定中,

  • version: 指定了要使用的 Docker Compose 版本。
  • services: 定義了要建立的服務。
  • web: 指定了運行您的 FastAPI 應用程式的服務名稱。
  • build: 指定了從哪個目錄建立 Docker 映像。在此案例中,它與 docker-compose.yml 放置的目錄相同。
  • ports: 在主機上將端口 8000 映射到容器內的端口 80。
  • volumes: 將當前目錄作為卷掛载在容器內,因此您可以重新載入實時代碼。

步驟 6 – 建立及運行 Docker 容器

使用 Docker Compose 建立此 Docker 映像並啟動容器:

sudo docker-compose build

此命令會從當前目錄中的 Dockerfile 建立 Docker 映像。現在,要以實際應用程序運行,请在終端中執行以下命令:

sudo docker-compose up

步驟 7 – 訪問你的 FastAPI 應用程序

一旦容器運行中,您可以通过在网络瀏覽器中转到 http://localhost:8000 来访问您的 FastAPI 应用程序。

步驟 8 [選擇性] – 管理你的 Docker 容器

以下是一些幫助您更好地控制運行您 FastAPI 應用程序的容器化環境的窍門。

  • 要停止運行的容器,請按 Ctrl + CCommand + .

  • 在背景運行容器時,要恢復控制權,請使用:

    sudo docker-compose up -d
    
  • 要停止並移除你的容器,請運行:

    sudo docker-compose down
    

結論

在這個教學中,你學習了如何在 Ubuntu 系統上使用 Docker Compose 創建和設定 FastAPI 應用程式。透過 FastAPI 的性能和 Docker 的效率,你可以有信心地建造堅固、可擴展的應用程式。

Source:
https://www.digitalocean.com/community/tutorials/create-fastapi-app-using-docker-compose