使用 FastAPI 和 Postgres 建立 GitHub Codespaces 開發環境

本文說明如何在 GitHub Codespaces 環境中一起執行 FastAPI 和 Postgres。 Codespaces 是一個雲端託管的開發環境,你可以用來建立可配置且可重複的開發環境。

你可以在整合開發環境(IDE)如 Visual Studio Code 中開啟範例倉庫,並使用 GitHub Codespaces 擴充功能

或者,您也可以在本機複製範例存放庫。 當你在 Visual Studio Code 中開啟專案時,可以使用 Dev Containers 來執行該專案。 開發容器必須在本地安裝 Docker Desktop 。 如果沒有安裝 Docker,你可以用 GitHub Codespaces 作為開發環境來執行專案。

使用 GitHub Codespaces 時,你每月有固定的核心可用時數。 本教學課程需要少於一個核心小時才能完成。 如需詳細資訊,請參閱 關於 GitHub Codespaces 的計費

您也可以使用此設定作為起點,並修改範例以執行其他 Python Web 架構,例如 Django 或 Flask。

在 Codespaces 中啟動開發環境

本教學課程介紹許多建立和使用 GitHub Codespaces 的可能方式之一。

  1. 移至範例應用程式存放庫 https://github.com/Azure-Samples/msdocs-fastapi-postgres-codespace

    範例存放庫具有使用 Postgres 資料庫建立具有 FastAPI 應用程式的環境所需的所有設定。 您可以遵循 為 GitHub Codespaces 設定 Python 專案中的步驟來建立類似的專案。

  2. 選取 程式碼Codespaces 標籤頁,然後+ 以建立新的 Codespace。

    顯示如何從 GitHub 存放庫建立 Codespace 的螢幕快照。

  3. 當容器完成建置時,請確認您在瀏覽器左下角看到 Codespaces ,並查看範例存放庫。

    codespace 金鑰組態檔 devcontainer.jsonDockerfiledocker-compose.yml。 如需詳細資訊,請參閱 GitHub Codespaces 概觀

    小提示

    您也可以在 Visual Studio Code 中執行程式代碼空間。 選取瀏覽器左下角的 Codespaces 或 (Ctrl + Shift + P / Ctrl + Command + P),然後輸入 “Codespaces”。 然後選取 [ 在 VS Code 中開啟]。 此外,如果您停止程式代碼空間並返回存放庫,並在 GitHub Codespaces 中再次開啟它,您可以選擇在 VS Code 或瀏覽器中開啟它。

    Note

    如果 PostgreSQL 無法啟動(容器當機),可能是因為 PostgreSQL 18+ 與現有資料目錄卷不相容。 編輯 .devcontainer/docker-compose.yaml 並改 postgres:latestpostgres:17,然後重建容器。 PostgreSQL 18 變更了資料目錄的布局,使掛載於 /var/lib/postgresql/data 的磁碟區與先前版本不相容。

  4. 選取 .env.devcontainer 檔案,並使用相同的內容建立名為 .env 的複本。

    .env 檔案包含程式碼用來連接資料庫的環境變數。

  5. 如果終端機視窗尚未開啟,請開啟 [命令選擇區] 來開啟一個視窗,Ctrl + Shift + P / Ctrl + Command + P輸入「終端機:建立新終端機」,然後選取它來建立新的終端機。

  6. 選取終端機視窗中的 [ ] 索引標籤,以確認 PostgreSQL 正在埠 5432 上執行。

  7. 在終端機視窗中,執行FastAPI應用程式。

    uvicorn main:app --reload
    
  8. 選取 [ 在瀏覽器中開啟] 通知。

    如果您沒有看到或錯過通知,請移至並尋找埠 8000 的本機位址。 使用該處所列的 URL。

  9. 在預覽網址末端加上 /docs ,可以看到 Swagger 的 UI,你可以用它來測試 API 方法。

    API 方法是從程式碼建立的 OpenAPI 介面中,由 FastAPI 產生的。

    顯示 FastAPI Swagger UI 的螢幕快照。

  10. 在 Swagger 頁面上,執行 POST 方法來新增餐廳。

    1. 展開 POST 方法。

    2. 選取 [試試看]。

    3. 填入請求內文。

      {
        "name": "Restaurant 1",
        "address": "Restaurant 1 address"
      }
      
    4. 選擇 執行 以提交變更。

線上到資料庫並檢視數據

  1. 返回專案的 GitHub Codespace,選取 SQLTools 擴充功能,然後選取 [要連線的 本機資料庫 ]。

    SQLTools 擴充功能是在容器建立時安裝的。 如果 SQLTools 擴充功能沒有出現在活動列,請關閉程式碼空間再重新開啟。

  2. 展開 [本機資料庫] 節點,直到您找到 餐廳 數據表為止,然後右鍵點選 [顯示資料表記錄]

    你看到你新增的餐廳。

    顯示如何在 Visual Studio Code 中使用 SQLTools 擴充功能的螢幕快照,以連線到 Postgres 本機資料庫並顯示數據表記錄。

收拾整理

若要停止使用 codespace,請關閉瀏覽器。 (或者,如果您以這種方式開啟 VS Code,請關閉 VS Code。)

如果您打算再次使用 codespace,您可以保留它。 只有執行中的程式代碼空間會產生CPU費用。 已停止的程式代碼空間只會產生記憶體成本。

如果您想要移除程式代碼空間,請前往 https://github.com/codespaces 管理您的程式代碼空間。

後續步驟